(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-16
(45)【発行日】2024-01-24
(54)【発明の名称】フレーム部分を有するビデオデータを符号化又は復号する方法及び装置
(51)【国際特許分類】
H04N 19/70 20140101AFI20240117BHJP
【FI】
H04N19/70
(21)【出願番号】P 2022098195
(22)【出願日】2022-06-17
(62)【分割の表示】P 2020551918の分割
【原出願日】2019-03-25
【審査請求日】2022-06-17
(32)【優先日】2018-04-09
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】タケ, ジョナサン
(72)【発明者】
【氏名】ウエドラオゴ, ナエル
(72)【発明者】
【氏名】ドゥヌアル, フランク
(72)【発明者】
【氏名】マゼ, フレデリック
【審査官】鉢呂 健
(56)【参考文献】
【文献】特許第7093420(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
フレームをビットストリームに符号化する方法であって、前記フレームは複数の
矩形領域に空間的に分割され、
前記複数の矩形領域の各々は少なくとも1つのスライスを含むことが可能であり、前記方法は、
前記フレーム
における矩形領域を符号化する工程と、
前記フレームに
おける前記複数の
矩形領域の各々の識別子をシグナリングする工程と、
前記フレームに
おける前記矩形領域の数に対応する第1情報をシグナリングする工程と、
前記フレームに
おける前記
矩形領域の位置の
第2情報をシグナリングする工程と、
前記フレームにおける前記複数の矩形領域の少なくとも1つの矩形領域の境界におけるループフィルタリングに関するフラグをシグナリングする工程と、
を有し、
前記複数の矩形領域の1つの矩形領域は前記複数の矩形領域の他の1つの矩形領域と異なる幅又は高さを有し、前記フレームに含まれる前記複数の
矩形領域の各々の前記識別子は、同じビット数で前記ビットストリームにシグナリングされ、更に、
前記フレームにおける前記複数の矩形領域の各々に異なる前記識別子が割り当てられる状況において、前記フレームにおける前記複数の矩形領域の各々の前記識別子を表すために用いられる前記ビット数の
情報であって、前記フレームにおける前記矩形領域の数に対応する第1情報と異なる情報である第
3情報が前記ビットストリームにシグナリングされ、
前記ビット数は可変のビット数であり、
前記識別子、前記第1情報、および前記
第2情報
の全ては、前記ビットストリームの
1つのパラメータセットにシグナリングされる
ことを特徴とする方法。
【請求項2】
前記フレームに含まれる前記複数の
矩形領域の各々は、独立して符号化されることを特徴とする請求項1に記載の方法。
【請求項3】
前記フレームに含まれる前記複数の
矩形領域の各々が独立して符号化されたことを示すフラグを提供することをさらに含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記フラグは、前記
矩形領域の境界においてループフィルタ
リングが有効かを示すことを特徴とする請求項1に記載の方法。
【請求項5】
前記フラグに応じて、前記
矩形領域の境界における適応ループフィルタ
リングが無効になることを特徴とする請求項1に記載の方法。
【請求項6】
ビットストリームから、フレームを含むビデオデータを復号する方法であって、前記フレームは複数の
矩形領域に空間的に分割され、
前記複数の矩形領域の各々は少なくとも1つのスライスを含むことが可能であり、前記方法は、
前記ビットストリームの
1つのパラメータセットから、前記フレームに
おける前記複数の
矩形領域の各々の識別子と、前記フレームに
おける矩形領域の数に対応する第1情報と、前記フレームに
おける前記
矩形領域の位置の
第2情報と、を取得する工程と、
前記
第2情報に基づいて前記フレーム内の前記
矩形領域の位置を決定する工程と、
前記ビットストリームから前記
矩形領域を復号する工程と、
を有し、
取得される前記識別子と前記第1情報と前記第2情報の全ては前記ビットストリームの前記1つのパラメータセットにシグナリングされており、前記フレームに含まれる前記複数の
矩形領域の各々の前記識別子は、同じビット数で前記ビットストリームにシグナリングされており、
前記矩形領域の境界のループフィルタリングに関するフラグが前記ビットストリームにシグナリングされており、更に、
前記フレームにおける前記複数の矩形領域の各々に異なる前記識別子が割り当てられる状況において、前記フレームにおける前記複数の矩形領域の各々の前記識別子を表すために用いられる前記ビット数の
情報であって、前記フレームにおける前記矩形領域の数に対応する第1情報と異なる情報である第
3情報が前記ビットストリームにシグナリングされており、
前記ビット数は可変である
ことを特徴とする方法。
【請求項7】
前記フレームに含まれる前記複数の
矩形領域の各々は、独立して符号化されていることを特徴とする請求項6に記載の方法。
【請求項8】
前記フレームに含まれる前記複数の
矩形領域の各々が独立して符号化されたことを示すフラグを取得することをさらに含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記フラグは、前記
矩形領域の境界においてループフィルタ
リングが有効かを示すことを特徴とする請求項6に記載の方法。
【請求項10】
前記フラグに応じて、前記
矩形領域の境界における適応ループフィルタ
リングが無効になることを特徴とする請求項6に記載の方法。
【請求項11】
フレームをビットストリームに符号化する符号化装置であって、前記フレームは複数の
矩形領域に空間的に分割され、
前記複数の矩形領域の各々は少なくとも1つのスライスを含むことが可能であり、前記符号化装置は、
前記フレーム
における矩形領域を符号化する手段と、
前記フレームに
おける前記複数の
矩形領域の各々の識別子をシグナリングする手段と、
前記フレームに
おける前記矩形領域の数に対応する第1情報をシグナリングする
手段と、
前記フレームに
おける前記
矩形領域の位置の
第2情報をシグナリングする手段と、
前記フレームにおける前記複数の矩形領域の少なくとも1つの矩形領域の境界におけるループフィルタリングに関するフラグをシグナリングする手段と、
を有し、
前記複数の矩形領域の1つの矩形領域は前記複数の矩形領域の他の1つの矩形領域と異なる幅又は高さを有し、前記フレームに含まれる前記複数の
矩形領域の各々の前記識別子は、同じビット数で前記ビットストリームにシグナリングされ、更に、
前記フレームにおける前記複数の矩形領域の各々に異なる前記識別子が割り当てられる状況において、前記フレームにおける前記複数の矩形領域の各々の前記識別子を表すために用いられる前記ビット数の
情報であって、前記フレームにおける前記矩形領域の数に対応する第1情報と異なる情報である第
3情報が前記ビットストリームにシグナリングされ、
前記ビット数は可変のビット数であり、
前記識別子、前記第1情報、および前記
第2情報
の全ては、前記ビットストリームの
1つのパラメータセットにシグナリングされる
ことを特徴とする符号化装置。
【請求項12】
ビットストリームから、フレームを含むビデオデータを復号する復号装置であって、前記フレームは複数の
矩形領域に空間的に分割され、
前記複数の矩形領域の各々は少なくとも1つのスライスを含むことが可能であり、前記復号装置は、
前記ビットストリームの
1つのパラメータセットから、前記フレームに
おける前記複数の
矩形領域の各々の識別子と、前記フレームに
おける矩形領域の数に対応する第1情報と、前記フレームに
おける前記
矩形領域の位置の
第2情報と、を取得する手段と、
前記
第2情報に基づいて前記フレーム内の前記
矩形領域の位置を決定する手段と、
前記ビットストリームから前記
矩形領域を復号する手段と
を有し、
取得される前記識別子と前記第1情報と前記第2情報の全ては前記ビットストリームの前記1つのパラメータセットにシグナリングされており、前記フレームに含まれる前記複数の
矩形領域の各々の前記識別子は、同じビット数で前記ビットストリームにシグナリングされており、
前記矩形領域の境界のループフィルタリングに関するフラグが前記ビットストリームにシグナリングされており、更に、
前記フレームにおける前記複数の矩形領域の各々に異なる前記識別子が割り当てられる状況において、前記フレームにおける前記複数の矩形領域の各々の前記識別子を表すために用いられる前記ビット数の
情報であって、前記フレームにおける前記矩形領域の数に対応する第1情報と異なる情報である第
3情報が前記ビットストリームにシグナリングされており、
前記ビット数は可変である
ことを特徴とする復号装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、空間部分を有するビデオデータを符号化または復号する方法および装置に関する。
【背景技術】
【0002】
並列符号化のために導入され設計されたHEVCタイル。しかしながら、高サイズのビデオコンテンツでは、タイルが異なって使用される幾つかのユースケースがある。特に、個々のタイル又はタイルのセットをストリーミングする必要性が高まってきている。いくつかのアプリケーションはまた、新しいビデオシーケンスを構成するために、同じシーケンス又は異なるシーケンスから異なるタイルを組み合わせる必要性を高めた。
【0003】
HEVCにおける現在のメカニズムは、この種のシナリオを念頭に置いて設計されていない。現在のHEVCメカニズムを用いてこれらのシナリオを実施することは、タイルに対するエンコード制約を追加することを意味し、復号時のタイルの任意の構成は、データの書き換え処理を含む。特に、スライスセグメントヘッダの操作を含むデータの書き換えが一般的に要求される。
【発明の概要】
【0004】
本発明は、前述の問題のうちの1つまたは複数に対処するように考案された。それは、フレーム部分の定義と、ビットストリームにおけるこれらのフレーム部分のシグナリングと、に関する。本発明は、復号時にこれらのフレーム部分の抽出および再結合を容易にする一方で、そうするときに必要な書き換え処理を制限することを目的としている。
【0005】
本発明の第1の態様によれば、フレームを含むビデオデータをビットストリームに符号化する方法が提供され、フレームはフレーム部分に空間的に分割され、方法は、
-少なくとも1つのフレーム部分を1つまたは複数の第1の符号化ユニットに符号化することを有し、
前記方法はさらに、
-前記第1の符号化ユニットへ、少なくとも1つのフレーム部分識別子をシグナリングすることと、フレーム部分識別子は1つの符号化フレーム部分を識別し、
-フレーム部分識別子およびフレーム部分に関する空間情報を含むフレーム部分構成情報を提供すること
を有する。
【0006】
本発明の第1の態様は、HEVCタイルのような既知のタイリングデザインと比較して圧縮を改善する可能性を可能にしながら、より柔軟性があり、より簡単な操作を提供するという利点を有する。
【0007】
一実施形態では、フレーム部分構成情報が1つの第2の符号化ユニットに提供される。
【0008】
一実施形態では、少なくとも1つのフレーム部分が独立して符号化される。
【0009】
一実施形態では、この方法がさらに、フレーム部分が独立して符号化されたことを示すフラグを提供することを含む。
【0010】
一実施形態では、1つまたは複数の第1の符号化ユニットが、フレーム部分が独立して符号化されたことを各フレーム部分について示すフラグを有する。
【0011】
一実施形態では、1つまたは複数の第1の符号化ユニットが、少なくとも1つのフレーム部分が独立して符号化されたことを示すフラグを有する。
【0012】
一実施形態では、1つまたは複数の第1の符号化ユニットが、フレーム部分を符号化するために使用される符号化制約のレベルを示すフラグを有する。
【0013】
一実施形態では、フレーム部分はスライスであり、第1の符号化ユニットはデータ部分を含むスライスユニットであり、フラグはスライスユニットのデータ部分のスライスセグメントヘッダに含まれる。
【0014】
一実施形態では、フレーム部分はスライスであり、第1の符号化ユニットはデータ部分を含むスライスユニットであり、フレーム部分識別子はスライスユニットのデータ部分のスライスセグメントヘッダに含まれる。
【0015】
一実施形態では、第1の符号化ユニットがヘッダ部分と、符号化フレーム部分を含むデータ部分と、を含み、前記フレーム部分識別子はヘッダ部分に含まれる。
【0016】
一実施形態では、フレーム部分識別子がすべてのフレーム部分符号化ユニットでシグナリングされ、事前定義されたフレーム部分識別子値はフレーム部分が独立して符号化されていないことを示す。
【0017】
一実施形態では、第2の符号化ユニットが1つまたは複数のフレームに関する情報専用のパラメータセットである。
【0018】
一実施形態では、第2の符号化ユニットがフレーム部分情報専用のパラメータセットである。
【0019】
一実施形態では、第1の符号化ユニットが、フレーム部分が独立して符号化されたことを示す特定のタイプを有する。
【0020】
一実施形態では、フレーム部分識別子が固定の所定数のビットを使用して符号化される。
【0021】
一実施形態では、フレーム部分識別子がシグナリングされた数のビットを使用して符号化される。
【0022】
一実施形態では、空間情報が、符号化ツリー単位アドレスによって与えられるフレーム部分の位置を含む。
【0023】
一実施形態では、空間情報が、サンプルアドレスによって与えられるフレーム部分の位置を含む。
【0024】
一実施形態では、空間情報が、フレーム部分のサイズを含む。
【0025】
一実施形態では、フレーム部分の位置がフレームに対して与えられる。
【0026】
一実施形態では、いくつかのパラメータデータユニットが、同じフレーム部分に対する異なるフレーム部分構成を含むビットストリームにおいてシグナリングされる。
【0027】
一実施形態では、第2の符号化ユニットが、所与のポストフィルタリングアルゴリズムがフレーム部分に使用可能かどうかを示すフラグを有する。
【0028】
一実施形態では、同じフレーム部分識別子を使用して、フレーム部分セットを定義するいくつかのフレーム部分を識別することができる。
【0029】
一実施形態では、ヘッダ部分がレイヤ識別子を含み、レイヤ識別子はフレーム部分識別子をシグナリングするために使用される。
【0030】
本発明の第2の態様によれば、少なくとも1つのビットストリームから、フレームを含むビデオデータを復号する方法が提供され、フレームはフレーム部分に空間的に分割され、方法は、
-ビットストリームから、フレーム部分識別子とフレーム部分に関する空間情報とを含むフレーム部分構成情報を取得することと、
-ビットストリーム内の1つまたは複数の第1の符号化ユニットから少なくともフレーム部分を抽出することと、フレーム部分はフレーム部分識別子を含み、
-空間情報に基づいてフレーム内のフレーム部分の位置を決定することと、
-決定された位置に従ってフレーム部分をフレームにレンダリングするためにフレーム部分を復号することと
を有する。
【0031】
一実施形態では、フレーム部分構成情報が1つの第2の符号化ユニットに提供される。
【0032】
一実施形態では、少なくとも1つのフレーム部分が独立して符号化される。
【0033】
一実施形態では、この方法がさらに、フレーム部分が独立して符号化されたことを示すフラグを取得することを含む。
【0034】
一実施形態では、1つまたは複数の第1の符号化ユニットが、フレーム部分が独立して符号化されたことを各フレーム部分について示すフラグを有する。
【0035】
一実施形態では、1つまたは複数の第1の符号化ユニットが、少なくとも1つのフレーム部分が独立して符号化されたことを示すフラグを有する。
【0036】
一実施形態では、1つまたは複数の第1の符号化ユニットが、フレーム部分を符号化するために使用される符号化制約のレベルを示すフラグを有する。
【0037】
一実施形態では、フレーム部分はスライスであり、第1の符号化ユニットはデータ部分を含むスライスユニットであり、フラグはスライスユニットのデータ部分のスライスセグメントヘッダに含まれる。
【0038】
一実施形態では、フレーム部分はスライスであり、第1の符号化ユニットはデータ部分を含むスライスユニットであり、フレーム部分識別子はスライスユニットのデータ部分のスライスセグメントヘッダに含まれる。
【0039】
一実施形態では、第1の符号化ユニットがヘッダ部分と、符号化フレーム部分を含むデータ部分とを含み、前記フレーム部分識別子はヘッダ部分に含まれる。
【0040】
一実施形態では、フレーム部分識別子がすべてのフレーム部分符号化ユニットでシグナリングされ、事前定義されたフレーム部分識別子値はフレーム部分が独立して符号化されていないことを示す。
【0041】
一実施形態では、第2の符号化ユニットが1つまたは複数のフレームに関する情報専用のパラメータセットである。
【0042】
一実施形態では、第2の符号化ユニットがフレーム部分情報専用のパラメータセットである。
【0043】
一実施形態では、第1の符号化ユニットが、フレーム部分が独立して符号化されたことを示す特定のタイプを有する。
【0044】
一実施形態では、フレーム部分識別子が固定の所定数のビットを使用して符号化される。
【0045】
一実施形態では、フレーム部分識別子がシグナリングされたビット数を使用して符号化される。
【0046】
一実施形態では、空間情報が符号化ツリー単位アドレスによって与えられるフレーム部分の位置を含む。
【0047】
一実施形態では、空間情報がサンプルアドレスによって与えられるフレーム部分の位置を含む。
【0048】
一実施形態では、空間情報がフレーム部分のサイズを含む。
【0049】
一実施形態では、フレーム部分の位置がフレームに対して与えられる。
【0050】
一実施形態では、いくつかのパラメータデータユニットが、同じフレーム部分に対する異なるフレーム部分構成を含むビットストリームから取得される。
【0051】
一実施形態では、第2の符号化ユニットが、所与のポストフィルタリングアルゴリズムがフレーム部分に使用可能かどうかを示すフラグを有する。
【0052】
一実施形態では、同じフレーム部分識別子を使用して、フレーム部分セットを定義するいくつかのフレーム部分を識別することができる。
【0053】
一実施形態では、ヘッダ部分がレイヤ識別子を含み、レイヤ識別子はフレーム部分識別子をシグナリングするために使用される。
【0054】
本発明の第3の態様によれば、フレームを含むビデオデータを含む新しいビットストリームを生成する方法が提供され、フレームはフレーム部分に空間的に分割され、方法は、
-複数のビットストリームから抽出され且つ新しいビットストリームにマージされる複数のフレーム部分を決定することと、複数のビットストリームは、請求項1~25のいずれか1項に従って符号化され、
-抽出するフレーム部分のフレーム部分識別子を決定することと、
-新しいビットストリームに対するフレーム部分構成情報を生成することと、
-複数のビットストリームから抽出すべき複数のフレーム部分を抽出することと、
-複数のフレーム部分および生成されたフレーム部分構成情報を、新しいビットストリームに埋め込むことと
を有する。
【0055】
一実施形態では、方法がさらに、
-抽出されたフレーム部分に対して新しいフレーム部分識別子を決定することと、
-フレーム部分識別子を、新しいフレーム部分識別子によって、抽出されたフレーム部分に置き換えることと
を有する。
【0056】
一実施形態では、複数のフレーム部分を抽出することが、
-複数のビットストリームを構文解析することと、
-決定されたフレーム部分識別子のうちの1つを含むフレーム部分符号化データユニットを抽出する。
【0057】
本発明の第4の態様によれば、フレームを含むビデオデータをビットストリームに符号化する装置が提供され、フレームはフレーム部分に空間的に分割され、装置は、
-少なくとも1つのフレーム部分を、1つまたは複数の第1の符号化ユニットに符号化するように構成された回路を有し、
方法はさらに、
-前記第1の符号化ユニットへ、少なくとも1つのフレーム部分識別子をシグナリングすることと、フレーム部分識別子は1つの符号化フレーム部分を識別し、
-フレーム部分識別子およびフレーム部分に関する空間情報を含むフレーム部分構成情報を提供すること
を有する。
【0058】
本発明の第5の態様によれば、少なくとも1つのビットストリームから、フレームを含むビデオデータを復号する装置が提供され、フレームはフレーム部分に空間的に分割され、装置は、
-ビットストリームから、フレーム部分識別子とフレーム部分に関する空間情報とを含むフレーム部分構成情報を取得し、
-ビットストリーム内の1つまたは複数の第1の符号化ユニットから少なくともフレーム部分を抽出し、フレーム部分はフレーム部分識別子を含み、
-空間情報に基づいてフレーム内のフレーム部分の位置を決定し、
-決定された位置に従ってフレーム部分をフレームにレンダリングするためにフレーム部分を復号する
ように構成された回路を有する。
【0059】
本発明の第6の態様によれば、フレームを含むビデオデータを含む新しいビットストリームを生成する装置が提供され、フレームはフレーム部分に空間的に分割され、装置は、
-複数のビットストリームから抽出され且つ新しいビットストリームにマージされる複数のフレーム部分を決定し、複数のビットストリームは、請求項1~25のいずれか1項に従って符号化され、
-抽出するフレーム部分のフレーム部分識別子を決定し、
-新しいビットストリームに対するフレーム部分構成情報を生成し、
-複数のビットストリームから抽出すべき複数のフレーム部分を抽出し、
-複数のフレーム部分および生成されたフレーム部分構成情報を、新しいビットストリームに埋め込む
回路を有する。
【0060】
本発明の第7の態様によれば、プログラマブル装置のためのコンピュータプログラム製品が提供され、コンピュータプログラム製品は、プログラマブル装置にロードされて実行されるときに、本発明による方法を実施するための一連の命令を含む。
【0061】
本発明の第8の態様によれば、本発明による方法を実施するためのコンピュータプログラムの命令を格納したコンピュータ可読記憶媒体が提供される。
【0062】
本発明の第9の態様によれば、実行時に本発明による方法を実行させるコンピュータプログラムが提供される。
【0063】
本発明による方法の少なくとも一部は、コンピュータで実施することができる。したがって、本発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書ではすべて一般に「回路」、「モジュール」、または「システム」と呼ばれることがあるソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。さらに、本発明は、媒体に具現化されたコンピュータ使用可能プログラムコードを有する表現の任意の有形の媒体に具現化されたコンピュータプログラム製品の形成をとることができる。
【0064】
本発明はソフトウェアで実施することができるので、本発明は、任意の適切なキャリア媒体上のプログラマブル装置に提供するためのコンピュータ可読コードとして実施することができる。有形、非一時的キャリア媒体は、フロッピーディスク、CD-ROM、ハードディスクドライブ、磁気テープ装置またはソリッドステートメモリ装置などの記憶媒体を含むことができる。過渡キャリア媒体は、電気信号、電子信号、光信号、音響信号、磁気信号、または電磁信号、例えばマイクロ波またはRF信号等の信号を含むことができる。
【図面の簡単な説明】
【0065】
ここで、本発明の実施形態を、単なる例として、以下の図面を参照して説明する。
【
図1】
図1は、本発明を統合することができるシステムを示す。
【
図2】
図2は、ブロックベースのビデオエンコーダ、例えばHEVCの画像符号化構造を示す。
【
図3】
図3は、HEVCにおけるスライスセグメント及びタイルと呼ばれる2種類のパーティションによる画像の分割を示す。
【
図4】
図4は、画像の境界を横切るCTUのためのHEVCで使用される4分木推論メカニズムを示す。
【
図5】
図5は、例えばHEVCで使用される境界拡張メカニズムを示す。
【
図6】
図6は、HEVCビットストリーム構成の例を示す。
【
図7】
図7は、注目領域(ROI)ストリーミングのためのHEVC分割の例を示す。
【
図8a】
図8aは、注目領域の組合せのための2つの異なる使用シナリオ例を示す。
【
図8b】
図8bは、注目領域の組合せのための2つの異なる使用シナリオ例を示す。
【
図9】
図9は、本発明が統合されたビデオエンコーダの典型的な符号化処理を示す。
【
図10】
図10は、本発明が統合されたビデオデコーダの典型的な復号処理を示す。
【
図13a】
図13aは、符号化処理によって実行されるフレーム部分構成のシグナリングを示す。
【
図13b】
図13bは、符号化処理によって実行されるフレーム部分構成のシグナリングを示す。
【
図13c】
図13cは、符号化処理によって実行されるフレーム部分構成のシグナリングを示す。
【
図14】
図14は、非格子ベースのパーティショニングの例を示す。
【
図15】
図15は、CTile識別子をシグナリングするための代替実施形態を示す。
【
図16a】
図16aは、CTileごとの依存関係リストを含むXPSを示す。
【
図17a】
図17aは、CTileが連続的に符号化されたフレーム間で位置またはサイズを変更することができる実施形態の例を提供する。
【
図17b】
図17bは、CTileが連続的に符号化されたフレーム間で位置またはサイズを変更することができる実施形態の例を提供する。
【
図18】
図18は、本発明の1つまたは複数の実施形態を実装するためのコンピューティングデバイスの概略ブロック図。
【発明を実施するための形態】
【0066】
ビデオシーケンスのフレームを空間フレーム部分に符号化することは、例えば、いわゆる360度ビデオのストリーミングに関連するシナリオにおいて特に有用であり、これは実際には、360度パノラマビデオ又は球面ビデオの古典的な2Dビデオ表現への投影の結果である。
【0067】
360度ビデオ(または360度ビデオのみ)は、良好なユーザ体験を提供するために非常に高い解像度を有することができるビデオである。ヘッドマウントディスプレイの内側(または画面上)に表示される場合、360ビデオコンテンツの空間サブパートのみがユーザに提示される。
【0068】
したがって、HTTP(DASH)上の動的アダプティブストリーミングのようなストリーミングプロトコルを利用することは興味深いことであり、例えば、ユーザが見ている領域に対してのみ、高品質の空間フレーム部分を要求することである。見られていない領域(すなわち、ユーザが見ていない領域)については、空間フレーム部分を単にスキップすることができる。
【0069】
本発明のアプリケーションは、ストリーミングをユーザの視線方向に適用するストリーミングアプローチに言及する。言い換えると、ビューポート依存のストリーミングを指す。このようなアプローチでは、記憶コスト、計算コスト、およびユーザ体験の間の1つの良好な妥協点は、シーケンスを様々な品質を有する独立した空間フレーム部分に符号化することである。次いで、フレーム部分は、ニーズおよび帯域幅制約に従って、ランダムにアクセスされ、抽出され、および/または他のフレーム部分シーケンスと組み合わされ得る。追加の符号化やトランスコーディングは要求されない。このようなシナリオの例を、
図8aを参照して説明する。
【0070】
アプリケーションは、いくつかの異なるビデオの空間フレーム部分がシステムオペレータから要求された構成に一致するように新しいビデオに再編成されるビデオ監視システムに関する。例えば、オペレータは、オリジナルビデオの一部のみを望む場合がある。この用途は、特に
図8bに示されている。
【0071】
最後に、別のアプリケーションでは、フルビデオシーケンスから抽出された単一の空間フレーム部分のみを含む新しい「ビデオ」が、新しいビデオにおける空間フレーム部分の新しい位置が異なる場合、符号化パラメータの書き換えを含むことができる。
【0072】
HEVCを使用する場合、空間フレーム部分の符号化は、HEVCタイルに基づく。しかしながら、HEVCタイル、より一般的にはHEVCタイプのタイルは、上述の用途に対処するようには設計されていない。
【0073】
図1は、本発明を統合することができるシステム(例えば、インタラクティブストリーミングビデオシステム)の実施形態を示す。
【0074】
ビデオビットストリームは、ネットワーク101を介して、サーバまたはプロキシサーバ100からクライアント102に送信される。サーバ100は、ブロックベースのビデオコーデック、例えばHEVCビデオコーデックの仕様に適合するビデオエンコーダ103によって生成されたビデオストリーム(またはビデオファイル)を使用する。
【0075】
エンコーダは以下に説明するように、本発明に従っていくつかの空間フレーム部分への空間ランダムアクセスを提供しながら、異なるレート/歪みトレードオフを有するビデオシーケンスのセットを圧縮する。
【0076】
サーバ100は、通信ネットワーク101を介して、インタラクティブストリーミングのための利用可能なビデオストリームの記述の要求を受信する。通信ネットワーク101は、インターネットプロトコル標準に基づいている。IPネットワーク101上でメディアプレゼンテーションを伝送するために採用される標準プロトコルは、好ましくはMPEG DASH: Dynamic Adaptive Streaming over HTTPである。しかしながら、本発明は、任意の他のストリーミングプロトコルにも使用することができる。
【0077】
図2は、2種類のパーティション:スライスセグメントおよび空間フレーム部分による画像の分割を示す。画像206は、3つのスライスセグメントに分割されている。スライスセグメントは、画像の一部又は画像全体である。各スライスセグメントは、(HEVCの符号化ユニットに対応することができる)整数個の符号化ブロックを含む。符号化ブロックはサンプルで構成される。
【0078】
2種類のスライスセグメント:独立スライスセグメント207と従属スライスセグメント208。各スライスセグメントは、1つのNALユニットに埋め込まれ、これはパケット指向およびビットストリーム指向トランスポートシステムの両方で使用するための汎用フォーマットを有する構造である。2種類のスライスセグメント間の差異は、独立スライスセグメントヘッダにおいて指定されたデータがスライスセグメントの符号化ブロックを復号するのに必要なすべてのパラメータを定義するという事実にある。一方、従属スライスセグメントは縮小されたヘッダを有し、そのヘッダ内で利用可能でないパラメータを推論するために、最初の先行する独立スライスセグメントに依存する。スライス内の最初の符号化ユニットの宛先は、独立スライスセグメントヘッダに指定される。
【0079】
図3は、空間フレーム部分(SPF)への別の分割を示し、フレーム305に示されるように、各フレームを独立して符号化矩形領域に分割することを可能にする。
【0080】
HEVCタイプのタイルのように、空間フレーム部分は、整数個の符号化ブロックを含む。スライス境界と同様に、SPF境界310は、すべてのイントラ予測メカニズムを破る。
【0081】
HEVCタイプのタイルのように、SPFは、復号処理を初期化するために使用される特定のNALユニットに含まれるピクチャパラメータセットで定義される。PPS NALユニットは、タイル行の数と、ピクチャ内のタイル列の数およびそれらの関連するサイズを指定できる構文要素を含む。その他のパラメータセットNALユニット(Video Parameter SetまたはVPS、Sequence Parameter SetsまたはSPSなど)は、ビットストリームの符号化設定を記述するパラメータを伝える。本発明では、これらのパラメータセットの何れかはXPS(Xはワイルドカード文字として使用される)として参照される。1つのスライスセグメントにおけるSPFの位置、例えば、ビットにおけるオフセット、は、スライスセグメントヘッダの末尾で使用可能な構文要素で識別される。
【0082】
SPFおよびスライスセグメントは一緒に使用できるが、いくつかの制約がある。以下の条件のうち1つまたは両方を検証する必要がある。
-1つのスライス(またはスライスセグメント)のすべての符号化ブロックは同じSPFに属する
-1つのSPFのすべての符号化ブロックは同じスライス(またはスライスセグメント)に属する
【0083】
1つのスライス(又はスライスセグメント)は、幾つかのSPF全体を含む、又は単一タイルのサブ部分のみであることを意味する。第2に、SPFは、いくつかのスライス全体(またはスライスセグメント)を含むことができる、または単一のスライス(またはスライスセグメント)のサブ部分のみであることができる。
【0084】
図4は、画像の境界を横切る符号化ユニットについて、HEVCで使用される四分木推論メカニズムを、説明のためだけに、概略的に示す。HEVCでは、画像は、符号化ユニットのサイズの倍数の幅及び高さを有するようには限定されない。次いで、フレームの右端の符号化ユニットは、画像の右側の境界401を横切り、フレームの最下部の符号化ユニットは、画像の最下部の境界402を横切る。これらの場合、HEVCは、境界を横切る符号化ユニットについて四分木推論メカニズムを定義する。このメカニズムは、境界を越えるCUがなくなるまで、あるいはこれらの符号化ユニットについて最大四分木深さに達するまで、画像境界を越えている符号化ユニットの任意のCUを再帰的に分割することにある。例えば、符号化ユニット403は自動的に分割されず、符号化ユニット404、405及び406は分割される。推論された四分木のシグナリングは存在せず:デコーダは、画像境界上の同じ四分木を推論しなければならない。しかしながら、自動的に取得された四分木は、例えば、407におけるように、(最大四分木深さに達しない場合に)その符号化ユニットについての分割情報をシグナリングすることによって、フレームの内側にある符号化ユニットについてさらに洗練されてもよい。
【0085】
図6は、サーバからクライアントに送信される典型的なビデオビットストリーム600を示す。ビットストリームは、HEVCまたはブロックベースのビットストリームに準拠している。
【0086】
ビットストリーム600は、一連のネットワークアブストラクトレイヤ(NAL)ユニットとして構造化される。NALユニットにはいくつかの種類(タイプ)がある。パラメータセットNALユニット(例えば、HEVCのためのVPS、SPS、およびPPS)は、シーケンスを符号化するために使用される符号化ツールの設定を記述する。それらはまた、画像の特性(解像度、フレームレート等)に関するいくつかの情報を記述する。
【0087】
第1のNALユニット601は、ビットストリーム全体の情報を提供するビデオパラメータセット(VPS)である。特に、ビットストリーム内のスケーラビリティレイヤの数を示す。
【0088】
続くNALユニット602は、シーケンスパラメータセット(SPS)である。それは、シーケンスレベルパラメータを提供する。ピクチャレベルパラメータを提供するピクチャパラメータセット(PPS)NALユニット603が後に続く。次に、スライスセグメント604を提供することができる。フレーム当たり1つのスライスセグメントを有することが一般的である。スライスセグメント604は、様々なNALユニットタイプ(CRA、IDR、BLA、RASL、RADL、STSA、TSA、またはTRAIL...)を有するNALユニットに含まれ得る。スライスセグメントを含むNALユニットは、NALヘッダ605(NALヘッダのさらなる説明は
図10の説明で提供される)と、生バイトシーケンスペイロード(RBSP)606とから構成される。NALヘッダ605は、NALユニットタイプを含む情報を含む。RBSP(すなわち、NALユニットデータ)は、NALユニットタイプに固有の情報を含む。スライスセグメントの場合、RBSPは、スライスセグメントヘッダ607と、それに続くスライスセグメントデータ608とを含む。スライスセグメントデータは、スライスセグメントのラスタスキャン順序付き符号化ツリーユニット609の符号化データの連続である。
【0089】
一実施形態(ここでは図示せず)では、(タイリングパラメータセットのための)TPSと呼ばれるパラメータセットを、スライスセグメントNALユニットの前にビットストリームに挿入することができる。対応するパラメータは、新しいTPSが見つかるまで有効である。TPSは、フレームのパーティショニング構成を記述する。
【0090】
別の実施形態では、ビットストリーム中にTPSが存在しない場合、ビットストリーム中に1つの空間フレーム部分のみが存在すると仮定される。前記空間フレーム部分は、ビデオフレームと同じ寸法(dimensions)を有し、その原点に配置される。
【0091】
ビットストリームは、独立したフレーム部分又は注目領域(ROI)を含むことができる。
図7は、ここではフレーム内の矩形領域と見なされる注目領域の例を概略的に示す。ROIは、HEVCおよびブロックベースのコーデックにおいて周知である。
【0092】
ROIまたは独立したフレーム部分をストリーミングすることは、パーティショニング戦略を意味する。これは、タイル境界の導入がいくつかのHEVC予測メカニズムを破壊するので、符号化効率に影響を及ぼす。
【0093】
図7において、フレーム700は、4×4SPF格子に分割される。予め定義されたROI701にアクセスするために、SPF6、7、10、11のための対応するスライスセグメントを埋め込むNALユニットが選択され、クライアントに送信される。
【0094】
好ましくは、本発明では、1つの独立したスライスセグメントと、ゼロまたはそれ以上の従属スライスセグメントと、がSPFに埋め込まれる。利点は、このROIを含むフレームの他の部分とは独立して、ROIへのアクセスを保証することである。
【0095】
実際に、HEVC及びより一般的にはブロックベースのコーデックに対して、HEVCタイル又は類似物は、それらの境界において全てのイントラフレーム予測メカニズム(ループフィルタリング処理を除く)を中断することに留意されたい。したがって、空間的予測メカニズムは許されない。しかしながら、いくつかの予測メカニズムは、圧縮を改善するために、ビデオシーケンスのフレーム間のデータの時間的冗長性に依存する。例えば、HEVCタイル内の1つのブロックは、現在のHEVCタイル境界の部分的に又は全体的に外側にある予測ブロックから予測することができる。さらに、HEVCは、予測ブロックが参照画像の部分的または全体的に外側にあることを可能にするために画像の境界を拡張する周知の境界拡張メカニズムを提供するので、予測ブロックは部分的または全体的にフレーム境界の外側にあってもよい。
【0096】
最後に、予測ブロックは、サブピクセル位置に配置されてもよい。これは、基準ブロック画素値がサブ画素補間フィルタの結果であることを意味しており、これは、予測ブロックの対応する全画素座標に位置する画素のブロックの外側の最大4画素の範囲からサブ画素値を生成する。その結果、時間予測は、HEVCタイル内のブロックと、HEVCタイル境界の外側に位置する画素データのセットと、の間に符号化依存関係を導入することができる。
【0097】
時間予測に関与する第2のHEVCメカニズムは、動きベクトル予測子を用いた動きベクトルの予測符号化にある。
【0098】
最後に、HEVCは、連続するタイルの画素間に依存関係を導入するループフィルタのセットを提供する。これらのループフィルタは、特に残差ブロックの量子化によって導入されるいくつかのアーチファクトを除去するデブロッキングフィルタとSAOフィルタである。HEVCは、これらのループフィルタがタイル境界又は/及びスライス境界でディスエーブルされているかどうかを示すために、ピクチャパラメータセット内にフラグを提供する。ディスエーブルされると、タイル間の符号化依存関係はこれらの圧縮ツールによって導入されない。
【0099】
注目領域の復号(注目領域を独立して復号することを意味する)を保証するために、解決策は、前述の予測メカニズムの一部または全部を無効にすることである。
【0100】
これは、結果として得られるビットストリームについて、より高いビットレートおよびより効率的でない圧縮につながる。結果として得られるビットストリームのビットレートを最適化するために、注目領域使用シナリオに応じて予測メカニズムのアクティブ化/非アクティブ化を適応させることが可能である。
【0101】
図8aおよび8bは、既に上述した、注目領域の組合せについて2つの異なる適用例を示す。
【0102】
例えば、第1の例では、
図8aが4つの注目領域から構成される2つの異なるビデオストリームからの2つのフレーム800及び801を表す。第1のビデオストリーム800は、高品質符号化パラメータを有し、第2の801は低品質であり、したがって、低ビットレートバージョンである。クライアントは、注目領域#3の高品質バージョンを、領域1、2、および4の低品質注目領域と効率的に組み合わせる。これにより、他の重要度の低い領域に対してビットレートを比較的低く維持しながら、注目領域#3の品質を強調することができる。
【0103】
第2の例では、4つのビデオストリーム(803、804、805、806)のセットが
図8bに示されている。この使用シナリオでは、クライアントが各ビデオストリームの異なる注目領域の新しいモザイクビデオを形成する。彼は、各ビデオストリームの注目領域を、結果として得られるビデオストリーム内の新しい位置に再配置または結合する。
【0104】
本発明の一実施形態によれば、ここでは制約タイル(以下の説明ではCTileとしてショートカット)と呼ばれる空間フレーム部分を定義することが提案される。これは、ランダムにアクセスされ、復号エラーなしに完全に復号されることができる空間フレーム部分に分割されたフレームのシーケンスに属する空間フレーム部分を指す。CTileの復号は、その空間的位置および/またはその近傍とは無関係に実行することができる。言い換えると、CTileは、復号器が常にエラーなしに復号できるように符号化される、または独立して符号化される。
【0105】
CTileを形成するサンプルに対応する符号化データは、独立して符号化される。例えば、データは、1つのパーサがCTileに対応するサンプルを抽出できるように、スライス(または同様の機能を有するフレームの任意の他の部分)を形成するNALユニットまたは符号化ユニットに符号化される。その結果、2つのCTileは、2つの異なる符号化ユニットのセットに符号化される。任意の空間位置で復号されるために、CTileは、他のCTileを含むスライスの一部であることはできない。したがって、CTileに対応するスライスの符号化データは、他のスライスからの符号化データから独立している。
【0106】
スライスに対応する符号化データはさらに、いくつかのスライスセグメント符号化ユニットに分割されてもよい。
【0107】
一実施形態では、CTileは厳密に独立して復号可能であり、これはCTileを形成する符号化データを解析するのに必要なすべてのデータが前記CTileに含まれることを意味する。さらに、予測メカニズムは、同じCTileの符号化データから計算された予測情報を使用する。インター予測の場合、参照ブロックは、別のフレーム内の同じCTileから取り出される。
【0108】
他の実施形態では、符号化制限を解除することができる。
【0109】
第1の他の実施形態では、境界拡張メカニズムが画像境界のために使用される。
図5に概略的に示すこのメカニズムは制限のない、より効率的な動き補償を可能にするために、CTileの境界に使用される。
【0110】
図5は、例えばHEVCで使用される境界拡張メカニズムを簡略化して示す。このメカニズムは、フレーム外のサンプル値を参照して、インター予測(現在のフレーム外のデータの使用を可能にする周知の予測モード)における動き補償を可能にする。
【0111】
フレーム502を符号化しながらブロック501を予測する場合、参照フレーム504の境界を横切るブロック503からの予測を可能にすることが有用である。これにより、例えば、以前のフレームの視野上で部分的に外側にあった同じコンテンツから動くコンテンツを予測することが可能になる。好ましくは、サンプルパディング方法は、参照ピクチャのフレーム境界の周囲のマージン内のサンプルにアクセスできるように定義される。
【0112】
第2の他の実施形態では、動きベクトル予測子(または任意の他の予測子)の派生メカニズムが、隣接するタイル情報やタイリング構成に全く依存しない方法で、CTileについて認可され得る。
【0113】
図9は、本発明によるビデオエンコーダにおいて実施される符号化処理の一例を示す。
【0114】
第1に、考慮される入力ビデオシーケンス900ごとに、エンコーダは、ステップ901において、フレームのフレーム部分へのパーティショニング(すなわち、フレーム部分構成)を決定する。いくつかの実施形態では、フレーム部分のサイズが、1つのフレーム部分が注目領域の単一または一部をカバーするように予め決定される。例えば、フレーム部分は、512×512画素のサイズを有することができる。
【0115】
次いで、エンコーダは、ステップ902において、どのフレーム部分をCTileとして符号化する必要があるかを決定する。例えば、そのようなフレーム部分は、クライアントが単独で復号することを望むか、またはクライアントが1つまたは複数の他の注目領域で構成することを望むことができる注目領域(ROI)に対応することができる。
【0116】
次に、エンコーダは、ステップ903で、すべてのCTileに識別子を決定して割り当てる。変形例では、エンコーダが識別子を決定し、CTileの選択のみに識別子を割り当てることができる。変形例では、CTileの識別子が推論されても良い。
【0117】
CTileに複数のエンコードされたフレームに同じ識別子が割り当てられている場合、これらのCTileが同じCTileシーケンスに属していることを意味する。CTileのシーケンス(またはCTileシーケンス)は、他のフレーム部分とは独立して復号することができる。CTileシーケンスからのデータのみが、前記CTileシーケンスを復号するために必要とされる。換言すれば、CTileシーケンスからのCTileは、一緒に時間的依存関係を有することができる。
【0118】
CTileおよびCTile識別子を決定した後、エンコーダは符号化設定に従ってフレーム部分904を圧縮して符号化する。フレーム部分の符号化は、任意のデコーダが前に説明したようにそれらを復号できることを保証する。
【0119】
エンコーダは、ステップ905で、フレーム部分構成情報を生成する。フレーム部分構成情報は、フレーム部分にパーティショニングするフレームの記述パラメータを決定することにある。また、CTile識別子をフレーム内またはフレームのシーケンス内のそれらの位置に関連付けることによって、CTileの記述パラメータを決定することにある。
図13a、
図13bおよび
図13c(第1の代替案)または
図15(第2の代替案)を参照して説明される、異なるシグナリング代替案が提案される。ステップ905は、パラメータセット(XPS)においてシグナリングタイリングパラメータを生成することを含む。変形例では、ステップ905が後ではなく符号化ステップ904の前に実行される。
【0120】
ステップ906は、XPSのNALユニットと、圧縮されたCTileフレーム部分とをビットストリームに任意にカプセル化することを含む。
【0121】
例えば、ストリーミングプロトコルに基づいて、このステップは、例えば、ISO BMFファイルフォーマットのような上位レベルのビデオ記述フォーマット内のビットストリームのカプセル化をさらに含み得る。例えば、ビデオデータをオーディオデータと多重化することも可能である。
【0122】
ステップ901、902、および903は、所定のフレーム部分位置を提供する1つ以上の設定ファイルを使用することによって実現することができ、フレーム部分がCTileであるかどうか、およびCTileのためにどの識別子を使用する必要があるかの情報を提供する。代替の実施形態では、フレーム部分およびCTileが、例えば、ディープニューラルネットワーク、またはより単純なセグメンテーションアルゴリズムを使用して、ビデオコンテンツの分析から自動的に決定することができる。
【0123】
いくつかの実施形態で説明されるように、ステップ901は、ビデオシーケンス全体(またはビデオセグメント内のいくつかの連続するフレームについては少なくとも)内で一定であるパーティショニングを決定するために使用されることができる。これは、CTileの位置およびサイズがCTileシーケンスの一部を含む少なくともいくつかのフレーム内のCTileシーケンス全体内で一定であることであることを意味する。
【0124】
あるいは、決定されたフレーム部分がフレーム間の可変サイズおよび位置を有しても良い。
【0125】
図10は、ビデオデコーダ内で、ビデオデコーダにおいて実施される復号処理の例を示す。復号処理は、上で定義したように、CTileの使用を含む。
【0126】
まず、ビデオデコーダは、パラメータセット(XPS)を含むNALユニットを抽出する。ステップ1000において、フレーム部分構成情報がパラメータセットから得られる。
【0127】
考慮されるフレーム部分1001ごとに、デコーダは、ステップ1002において、フレーム部分がCTileであるかどうかをフレーム部分構成情報から判定する。
【0128】
フレーム部分がCTileとしてシグナリングされる場合、テスト1003の後、ブランチ「yes」で、デコーダは、フレーム部分構成情報からCTile識別子を抽出し(または推論し)、ステップ1005において、CTile識別子および識別子に関連付けられたCTile位置情報のおかげで、CTileの復号位置を決定する。そうではなく、フレーム部分がCTileでない場合、テスト1003の後、ブランチ「no」で、デコーダは、ステップ1005において、フレーム部分符号化データに記述された測位情報から、およびXPS情報から、フレーム部分の復号位置を決定する。
【0129】
最後に、デコーダはフレーム部分がCTileであるか否かを考慮して、フレーム部分符号化データ1006を復号し、復号されたサンプル値をレンダリングピクチャバッファ内に入れる。
【0130】
図11は、
図9の符号化処理で生成された2つのビットストリームのマージ処理の例(
図8aおよび
図8bのアプリケーションを参照)を示す。マージ処理は、抽出されたCTileがクライアントに送信される新しいビデオビットストリームに結合されることを意味する。
【0131】
マージ処理は、ステップ1100において、1つ以上のビデオビットストリームから抽出され、新しいビットストリームにマージされるCTileのセットを決定することによって開始する。例えば、グラフィカルユーザインターフェースは、ユーザがCTileのセットを選択し、フレーム内でそれらを再配置することも可能にする。別の例では、ビットストリームの内容に基づいて選択が自動的に実行される。アプリケーションは、移動するコンテンツを含むCTileのセットを選択することができる。
【0132】
処理は、ステップ1101において、新しいビデオビットストリームにマージされたときのCTileの新しい位置を決定する。
【0133】
抽出されるCTileが分かると、ステップ1102において、抽出される決定されたCTileの各々の現在のCTile識別子を取得することによって、それらの新しい識別子が決定される。これらの識別子は、本発明の実施形態に従って、フレーム構成情報においてシグナリングされる。前述したように、代替の実施形態では、フレーム構成情報が、入力ビットストリームをカプセル化するために使用されるファイルフォーマットで記述されても良い。フレーム構成情報は、XPSおよびファイルフォーマットの中に存在することがある。
【0134】
2つ以上のCTileが同じ識別子を有することを意味する識別子衝突の場合、ステップ1101は、これらの衝突を解決するための新しいCTile識別子を決定することをさらに含む。
【0135】
次に、処理は、新しいビデオビットストリームのマージされたビデオシーケンスのためのフレーム部分構成情報を生成する(1103)。これは、マージされたビットストリーム内のCTileの新しい位置をそれらの新しいCTile識別子に関連付けるXPSの1つにおいてパラメータを生成することを含む。
【0136】
ステップ1104では、ステップ1100で決定されたCTileのセットの符号化フレーム部分データが抽出または取得される。それは、CTileの符号化フレーム部分データを含むNALユニットを取り出すことを含む。これは、ステップ1102で決定されたCTile識別子を有するものを抽出するために、入力ビットストリーム中のすべてのNALユニットを構文解析することによって行うことができる。入力ビットストリームがファイルフォーマット仕様に準拠する場合、1つのフレーム部分に対応するすべてのNALユニットは1つのコンテナ、例えば、ISOBMFF用のビデオトラックにカプセル化される。次に、ステップ1104は、選択されたフレーム部分のトラックに対応するデータを取り出すことを含む。
【0137】
最後に、オプションのステップ1105で、XPSのNALユニットと、抽出されたCTile符号化フレーム部分データを含むNALユニットとを新しいビットストリームに埋め込み、場合によっては、このビットストリームをより高いレベルの記述フォーマットにカプセル化することによって、新しいビットストリームが生成される。
【0138】
CTile識別子衝突のためにステップ1101で新しいCTile識別子が決定されたCTileについて、ステップ1105は、オリジナルのCTile識別子を含むNALユニットに含まれるヘッダを修正することをさらに含む。これらのヘッダは、オリジナルのCTile識別子がステップ1102で決定されたCTile識別子によって置き換えられるように修正される。
【0139】
1つの例では、
図11のマージ処理は、同じビットストリームからCTileのサブセットを抽出することにある。このような場合、識別子の衝突を処理する必要はない。
【0140】
図13aおよび13bおよび13cは、本発明のいくつかの実施形態による、符号化処理によって実行されるフレーム部分構成のシグナリングの例を示す。
【0141】
図13aは、本発明の一実施形態によるビットストリーム内のCTileの識別を示す。
【0142】
ここで、ctile_unique_identifier1301という名前のCTile識別子は、フレーム部分符号化データ中に示される。好ましくは、識別子がフレーム部分符号化データに属する各データシーケンス(すなわち、スライスセグメントヘッダ)において示される。したがって:
-ビットストリームのどの部分がCTileに属しているかについての簡単な識別、および
-これらの部分の迅速なアクセスまたは抽出
が可能である。
【0143】
より正確には、
図13aに示す実施形態では、CTile識別子1301が、識別子1301を有するCTileに対応する各スライスセグメントのスライスセグメントヘッダ(slice_segment_header)1302においてシグナリングされる。
【0144】
前述のように、デコーダは、フレーム部分構成情報に基づき、CTile識別子を解析して、CTileの関連する位置を決定する。実施形態によれば、フレーム部分構成情報は、
図13bまたは
図13cを参照して後述するように、パラメータセット、例えば、TPS)で提供される。
【0145】
明示的に言及されない限り、または適用できない限り、以下の簡潔さのために、CTileとCTileシーケンスとの間に区別はない。さらに、CTile識別子は、CTileシーケンス識別子と見なすこともできる。
【0146】
実施形態では、識別子が必ずしも必要ではないHEVCタイプのタイルをCTileと区別するために、例えばctile_flag1303のような情報がフレーム部分符号化データに属するデータシーケンス(例えば、スライスセグメントヘッダ内)で使用されてもよい。ctile_flagが非アクティブの場合(例えば’false’に設定されている)、HEVCタイプのタイルのパラメータ1304が提供される。これらのパラメータは、たとえばfirst_slice_in_pic_flagやCTU宛先(slice_segment_adress)のようなタイル位置決め情報や、slice_pic_parameter_set_idのような他のビットストリーム要素への参照を含み得る。これらの構文要素は、フレームパーティショニングに依存し、あるビデオシーケンスと他とで異なる場合がある。
【0147】
ctile_flagがアクティブの場合、これらのパラメータは省略され、CTile固有識別子1301)を構成するCTile固有情報が代わりに提供される。CTileで複数のスライスを持つことができるようにするため、1つのソリューションは、ここでctb_addr_offset_inside_tile1305という名前の情報を提供することである。この情報1305はまた、考慮されるフレームを有するCTile位置に対してスライスセグメントの復号を開始する位置を指定するために使用される。例えば、この位置は、CTileの先頭とその幅(CTB)に対して、生のスキャンの順序付けられた符号化ブロック数(例えば、HEVC標準符号化ツリーブロックであるCTB)で表されるので、ctb_addr_offset_inside_tile情報は、CTile符号化/復号位置とは無関係である。
【0148】
別の実施形態では、フラグctile_flagは使用されない。例えば、CTile識別子は、全てのタイル、CTile及び他のタイル(HEVCタイプのタイル)に存在する。所定の値、例えば値0は、HEVCタイプのタイルを識別するために使用されてもよい。
【0149】
一実施形態では、情報が、空間フレーム部分がCTileであるか否かを識別するために提供される。
【0150】
別の実施形態では、CTileのみが使用されるフレーム部分であると仮定すると、空間フレーム部分がCTileであるか否かを識別するために情報は提供されない。
【0151】
好ましくは、所与のフレームにおいて、所与の識別子を有するCTileは1つ以下である。同じCTile識別子が時間的に依存する(例えば、CTileシーケンスにおいて)全てのCTileにおいて使用される。したがって、連続して符号化されたピクチャ内の同じCTile識別子を有するCTileが抽出される場合、それらは適切に復号されることになる。
【0152】
言い換えると、CTile識別子は、符号化されたビデオシーケンス内のCTileを識別する一意の識別子である。一実施形態では、CTile識別子が、CTileに含まれるスライスセグメントのスライスヘッダに挿入される。これは、ビットストリームにおいて、CTileに対応するNALユニット(スライスセグメント)がCTile識別子を含むことを意味する。したがって、任意のCTileを解析し、このCTile識別子に基づいてビットストリームから簡単に抽出できる。
【0153】
ビットストリーム内のCTile構成情報をシグナリングすることが有利である。例えば、CTile構成情報は、CTileの数、関連するCTile識別子、およびフレーム内のCTileの位置によって定義される。
【0154】
図13bは、本発明の一実施形態によるCTile構成を示す。
【0155】
第1の実施形態では、エンコーダが、復号されるピクチャ内のCTileのフレーム部分構成情報に関連する追加のシグナリング情報を特定する。シグナリング情報は、パラメータセット(XPS)において提供され、好ましくは、タイリングパラメータセット(TPSにおいて提供される。好ましくは、追加のシグナリング情報が、ここでnum_ctilesと呼ばれるピクチャ内のCTileの番号1311を含む。CTileごとに、ここではtile_ctb_addrと呼ばれるCTile位置1313と共にCTileの一意の識別子1312を関連付け、ピクチャ内の復号位置を意味する。CTile位置が、ピクチャ内の復号位置として提供される。CTBインデックス番号(例えば、ラスタースキャン順序に対して相対的)で表現されてもよい。
【0156】
別の実施形態では、ここでslice_pic_parameter_set_idと命名されたパラメータは、1304によって指定された部分における
図13aで表されたスライスセグメントヘッダにも言及されており、TPSを表す固有の識別子を参照する。変形例では、一意の識別子はPPSを表す。この他の実施形態では:
-各TPSは、TPSを識別するtile_parameter_set_id(簡略化のために図示せず)パラメータを含み-たとえば、ピクチャにおいてCTile構成が変化するたびに、エンコーダが新しいTPSを生成する可能性があることを意味しており-フレームの各スライスヘッダを書き換えることを避けるために、同じTPS(またはPPS)一意の識別子を持つTPSを生成することをお勧めする。
-スライスセグメントヘッダのslice_pic_parameter_set_id1314は、スライスに適用されるTPSのtile_parameter_set_idに等しい。そのような場合、スライスセグメントヘッダのslice_pic_parameter_set_idの名前をslice_tile_parameter_set_idに名前を変更できる。
【0157】
1つの代替例では、TPS識別子は、スライスデータにおいて指定されず、デコーダは、スライスNALユニットに先行する最後のTPS NALユニットが現在のCTileのフレーム部分構成を含むことを推論する。
【0158】
図13cは、本発明の別の実施形態によるCTile構成を示す。この実施形態によれば、TPS1320は、タイルの数マイナス1を示すパラメータ値、例えば’num_tiles_minus1’1321を含む。または、TPSは、フレーム内のタイル数を直接的または間接的に提供するインスタンス’num_tiles’という名前のパラメータ値を含む。
【0159】
一実施形態では、TPSが1つのフレーム部分しかないことを示す場合、これはビデオフレームと同じ寸法を有し、その起点に位置するCTileであると仮定される。さもなければ(TPSはいくつかのフレーム部分を記述する)、フレーム部分位置は前の実施形態のように記述される。
【0160】
別の実施形態では、TPSがない場合、ビデオフレームと同じ寸法を有する1つのCTileがあると仮定される。前記1つのCTileは、その起点に位置する。
【0161】
別の実施形態によれば、TPSはHEVC格子に類似した構文、例えば、’num_tile_rows_minus1’、’num_tile_cols_minus1’、および’uniform_spacing_flag’を特定し、該構文を有する空間フレーム部分格子を記述することができる。’uniform_spacing_flag’が設定されていない場合、各列の幅と各行の高さ(推定可能な列のサイズと最後の行のサイズを除く)も指定される。’uniform_spacing_flag’が設定されている場合、CTileの幅と高さは、例えばHEVC仕様のように、ピクチャの幅と高さから計算される。そのような実施形態では、格子インデックスが対応するCTileを局所化することを可能にするので、CTile位置は、空間フレーム部分格子インデックスに対応するCTile数(例えば、タイルのラスタ走査順序を使用する)によって表現され得る。
【0162】
代替の実施形態によれば、’ctile_flag’は、いくつかの値をとることができる’ctile_level’に置き換えられ、各値は、CTileに適用される異なるレベルのエンコード制約を示す。例えば、ctile_levelがゼロに等しい場合は、CTileが制約されないことを示す(HEVCタイプのタイルのように)。ctile_levelが’1’に等しい場合は、オリジナルの近傍で復号できるが他のCTileでシャッフルすると適切に復号されない可能性がある、若しくは単独で(オリジナルの近傍なしで)抽出して適切に復号できるように、CTileが制約されることを示す。ctile_levelが’2’に等しい場合は、任意の近傍(前の実施形態における1に等しいctile_flagと等価)でシャッフルされ、どこでも復号できるようにCTileが制約されることを示す。
【0163】
別の実施形態では、’ctile_level’が、エンコーダが制約のレベルを満たすためにエンコード決定を行った情報を提供するだけである。したがって、任意のレベルの制約を有するCTileの復号処理は、HEVCタイプのタイルと同じ復号処理によって実施することができる(例えば、CTile境界に対して境界拡張は実行されない)。
【0164】
別の実施形態では、符号化および復号処理がすべてのレベルの制約について同じではない。たとえば、ctile_levelが’1’のCTileは、HEVCタイプのタイルと同じ復号処理を使用する(エンコーダで使用され、デコーダに影響を与えないいくつかの制限)。一方、ctile_levelが’2’のCTileは、CTile境界の境界拡張を使用して、モーションベクトル予測子のリストの特定の派生処理を使用して、復号される必要がある。
【0165】
別の実施形態によれば、HEVCタイプのタイルであっても、識別子(例えば、XPS内のそれらのパラメータを関連づけるため)を有する必要がある場合があり、この識別子は、CTile識別子と同様の方法でスライスセグメントヘッダ内に指定される。所与のフレームでは、HEVCタイプのタイルがCTileと同じ識別子も、別のHEVCタイプのタイルと同じ識別子も有しない。
【0166】
一実施形態によれば、エンコーダは、パラメータセットのうちの1つ、例えばPPSまたはTPSにおける各空間フレーム部分の’ctile_flag’の値をシグナリングすることによって、空間フレーム部分がCTileであることを示す。例えば、エンコーダは、フレームの各タイルについて固有の識別子を生成する。フレーム部分構成を記述するとき、エンコーダは、フラグ(例えばctile_flag)を各タイル固有識別子に関連付ける。このフラグは、対応するタイル(すなわち、関連する固有識別子と等しい識別子をもつタイル)の符号化が、独立した復号を保証するために制約されるとき、真である。反対に、タイルの符号化が独立した復号を保証するのに十分に制約されていない場合、フラグは偽である。
【0167】
第2の実施形態によれば、エンコーダは、別のフラグ(例えば、all_ctile_flag)を含むフレーム部分構成情報を生成する。このフラグが「1」に設定されている場合には、フレーム部分構成に記述されている全てのタイルがCTileであることを意味する。空間フレーム部分がCTileであるかどうかを示すフラグ(例えば、各ctile_flag)は省略され、真と等しいと推論される。このフラグがゼロに設定されている場合、CTileは、先の実施形態の1つを使用して明示的に記述されている。パラメータがHEVCタイプのタイルに固有の場合、スライスセグメントヘッダではなく、TPSなどでXPSでシグナリングされる。例えば、別の実施形態のために参照により1304に組み込まれるslice_segment_addressは、HEVCタイプのタイルに特有である。一実施形態では、TPSが、空間フレーム部分がCTileではないことも示す場合、TPSに示される。この実施形態は、スライスセグメントヘッダの構文解析及び構文を単純化することを可能にする。
【0168】
別の実施形態によれば、エンコーダは、スライスセグメントヘッダ内の’ctile_flag’を使用する代わりに、CTileに対応するスライスデータのための新しいNALユニットタイプを定義する。例えば、エンコーダは、CTile内にある瞬時復号リフレッシュ(IDR)フレームからスライスNALユニットのCTILE_IDRNALユニットを定義する。エンコーダは、符号化フォーマットが通常のスライスデータに対して指定するのと同じ数の新しいNALユニットタイプを定義する。たとえば、HEVCは、以下のNALユニットのタイプ クリーンランダムアクセス(CRA)ピクチャのスライスセグメントに対してCRA_NUT、ランダムアクセス復号可能リーディング(RADL)IDRピクチャのスライスセグメントに対してIDR_W_RADL、ビットストリームに関連する先行ピクチャが存在しないIDRピクチャのスライスセグメントのIDR_N_LP、破損リンクアクセス(BLA)ピクチャのスライスセグメントに対してBLA_W_LP、BLA_W_RADL、BLA_N_LP、ランダムアクセススキップドリーディング(RASL)ピクチャのスライスセグメントに対してRASL_N、RADL_R、RADLピクチャのスライスセグメントに対してRADL_N、RADL_R、ステップワイズテンポラルサブレイヤアクセス(STSA)ピクチャのスライスセグメントに対してSTSA_N、STSA_R、テンポラルサブレイヤアクセス(TSA)ピクチャのスライスセグメントに対してTSA_N、TSA_R、非STSAの末尾のピクチャ、非TSAのスライスセグメントに対するTRAIL_N、TRAIL_R、を定義する。
W_LP:関連付けられたRASLまたはRADLピクチャを持つことができる。W_RADL:関連付けられたRASLピクチャなし。N_LP:関連付けられたリーディングピクチャなし。*_N:ピクチャはサブレイヤ非参照(SLNR)ピクチャである(それ以外の場合は、サブレイヤ参照ピクチャである)。*_R:ピクチャは単なるサブレイヤ参照ピクチャである。
【0169】
これらのHEVC NALユニットタイプは、制約されたタイルデータに対して同じ目的で、新しい対応するNALユニットタイプCTILE_BLA_*、CTILE_CRA_*、CTILE_IDR_*、CTILE_RASL_*、CTILE_RADL_*、CTILE_STSA_*、CTILE_TSA_*、CTILE_TRAIL_*で拡張できる。これらの新しいNALユニットタイプの1つを使用することは、NALユニットがCTileに属することを示す。
【0170】
この代替案は、エンコーダが各NALユニットの第1のビットを解析して、スライスデータがCTile内にあるか否かを判定するだけでよいので、復号処理を単純化する。
【0171】
好適には、CTile識別子の単一性は、与えられたビットストリームにおいて意味する、与えられたシーケンスのための符号化時の構築によって保証される。ただし、異なるビットストリームから由来することを意味する、異なるシーケンスからCTileをシャッフルする場合、単一性は保証されない。一実施形態によれば、様々なシーケンスから潜在的に由来するCTileとの空間フレーム部分のシャッフルを容易にするために、CTile識別子は、限られた数のビットで一意である。一意の値はランダムな値、例えば、ハッシュ値、またはその位置を必ずしも表すとは限らない他の任意の値とすることができる。したがって、異なるビットストリームのCTileを取るときに識別子衝突を有する確率を低減する。
【0172】
一実施形態では、複数のシーケンスからCTileのシャッフリングを実行するとき、2つのCTile識別子間の衝突の場合、衝突したCTile識別子を置き換えれば十分である。すべてのスライスセグメントヘッダを再生成することを強制されないことによって効率的に行うために、好ましい実施形態では、CTile識別子を符号化するために、固定の所定数のビットが使用される。例えば、
図13aおよび13bでは、CTile識別子は8ビットで符号化される。
【0173】
代替の実施形態では、シーケンスまたはピクチャのすべてのCTile識別子が同じビット数で符号化される。このビット数は、例えばSPS、PPS、RPS、’uid_num_bits’のような一つのパラメータセットのパラメータで指定される。スライスセグメントヘッダでは、CTile識別子の後にバイトアライメントメカニズムを持つことが好ましい(8の倍数ではないビット数を取る場合)。または、ビット数をバイト数(8ビット)で表すこともでき、たとえば、’uid_num_bytes’である。CTileをさまざまなシーケンスからまとめてシャッフルする場合、CTile識別子を、すべて同じビット数を有さないときに変更する必要があるかもしれない。これには、いくつかのスライスセグメントヘッダを変更する必要があるが、バイトのみを追加/削除または置換する必要があるため、スライスセグメントヘッダを更新するよりも簡単である。
【0174】
さらに別の代替の実施形態では、各CTile識別子が可変数のビットで符号化されてもよい。そのビット数は、スライスセグメントヘッダで指定される。あるいはビット数がCTile識別子のために使用されるコードから自動的に決定され得る:可変バイト長コードは例えば、指数ゴロム符号化(または等価的に可変長コードの後にバイトアライメントビットが続く)を使用される。
【0175】
実施形態によれば、CTile識別子はシグナリングサイズを低減するために、従属スライスセグメントヘッダにおいてシグナリングされない。次に、従属スライスセグメントヘッダのCTile識別子が、前の独立スライスセグメントヘッダから推論される。代替の実施形態によれば、CTile識別子はCTileを含むサブビットストリームの構文解析および抽出を容易にするために、従属スライスヘッダでシグナリングされる。
【0176】
’tile_ctb_addr[i]’1313または’slice_segment_address’1306符号化ユニットアドレスでCTile位置をシグナリングする代わりに、きめ細かいCTileが導入され、より細かい位置決めが行われる。この粒度はルマサンプル位置まで精緻化することができるが、別の実施形態では、「2」の累乗(CTUサイズより小さい)に対応する多数のルマサンプルの粒度で十分である。いくつかの実施形態では、粒度が予め決定されてもよい。代替の実施形態では、粒度が例えば、VPS、SPS、またはPPSでシグナリングされる。細粒CTileが使用される場合、CTileの寸法は、必ずしもCTUサイズの倍数ではない。
【0177】
CTileのサイズがCTUサイズの倍数でない場合、CTileの右側および下側の符号化ユニットは
図4に示すように、ピクチャの右側および下側のHEVC CTUに使用されるものと同様の自動分割メカニズムを使用する。
【0178】
代替の実施形態によれば、符号化ユニットが不完全であっても、構文は完全な符号化を記述し、分解ツリー(例えば、クアツリーまたはQTBT)のレート歪み最適化のためのいくつかの空間を与え、圧縮を改善するのに適した情報の最終的なパディングを可能にする。
【0179】
HEVCタイプのタイルでは、寸法はグリッドを用いて指定される。従って、全てのHEVCタイプのタイルは行及び列によって整列され、所与の行の全てのHEVCタイプは同じ高さを有し、所与の列の全てのHEVCタイプのタイルは同じ幅を有する。各列の幅と各行の高さは、XPSで指定される。きめの細かいHEVCタイプのタイルでは、例えば、複数のROIのより効率的な符号化を可能にするために、より厳密でないアレンジメントを可能にすることが便利であり得る。
【0180】
一実施形態によれば、CTileの寸法は、CTileのスライスセグメントのスライスセグメントヘッダ内で指定することができる。結果として得られるビットストリームのサイズを縮小するために、CTileの寸法は、第1のスライスセグメントにおいてのみ指定される。以下のスライスセグメントは、同じCTile寸法を再利用する。代わりに、すべてのCTileの寸法がXPSで提供され、たとえば、CTileの位置と一緒に提供される。
【0181】
別の代替として、寸法は、CTileの第1のスライスセグメントヘッダおよびXPSの両方において提供される。
【0182】
別の代替として、CTileの寸法は提供されないが、XPS内のタイル情報(例えば、位置または’ctile_flag’)を提供するために使用される順序付けから、およびCTile位置から推論され、例えば、CTile位置はXPS内で宣言され、CTile位置は、CTileの対応する右下隅のそれぞれが(例えば)ラスタスキャン順序において昇順で順序づけられるように、並べられる。以下の
図14は、そのような順序付けの例を提供する。
【0183】
実施形態によれば、
図13aの例で使用されるdependent_slice_segment_enabled_flagは、HEVCにおけるものと同じ意味を有する。これは、従属スライスセグメントが許されるか否かを示すために使用される。HEVCでは、dependent_slice_segment_enabled_flagがPPSでシグナリングされる。我々の好ましい実施形態によれば、dependent_slice_segment_enabled_flagは、tiling_parameter_set(TPS)において、各CTileについてシグナリングされる(従属スライスセグメントと共に符号化されたCTileを、同じバイストリーム内の従属スライスセグメントなしに符号化されたCTileと共に使用することを可能にするため)。すべてのCTileが従属スライスセグメントの有無にかかわらず符号化される一般的なユースケースのTPSの構文を減らすために、TPS構造のルートにdependent_slice_segment_enabled_flag_for_all_ctilesという別のフラグが使用される。このフラグが1に設定されている場合、dependent_slice_degment_enabled_flagはCTileごとにシグナリングされない。代わりに、ctile_dependent_slice_segment_enabled_flagもTPS構造のルートにシグナリングされ、各CTileのdependent_slice_degment_enabled_flagに対して推論される値を提供する。HEVCタイプのタイルの場合、dependent_slice_segment_enabled_flagは、PPSでシグナリングすることができるが、好ましい実施形態ではTPSでシグナリングされる。
【0184】
代替の実施形態によれば、dependent_slice_segments_enabled_flagは構文を単純化するために、まったくシグナリングされず、常にtrueとして推論される。
【0185】
図14は、非格子ベースのパーティショニングの例を示す。フレーム1401は、#1から#15まで番号付けされた15個のCTileに分割される。この番号付けは、各タイルの右下隅がラスタスキャン順序で順序付けられるように、XPS内のタイル位置の宣言順序を提供する。この順序付けを使用して、各CTileのサイズを推定することができる。例えば、最後のCTile、CTile#15を取ると、最後のタイルであるので、その右下隅がラスタスキャン順序において最後であり、従って、それがフレームの右下隅であるので、その寸法を推定することができる。スライス#15の寸法は、フレームの寸法からその位置を引いたものである:h#15=h_frame-y#15;w#15=w_frame-x#15。タイル#14は、CTile#15の前の最後の右下隅をそれ自体の右下隅として有しなければならず、したがって、右下隅位置は最も下(フレームの底部)であり、最も右(前のタイルの左端)である。CTile#14の寸法は、h#14=h_frame-y#14;w#14=x#15-x#14となる。同じことがタイル#13および#12についても繰り返される。次に、タイル#11については、最も下の位置が満たされているので、新しい最も下の位置はy#14である。次に、h#11=y#14-x#11である。そしてCTile#1まで続く。
【0186】
代替の実施形態によれば、XPS内のCTile位置を指定する代わりに、CTileの寸法のみが指定され、CTile位置は、左上の位置に従って順序付けられたCTileを用いて(例えば、ラスタスキャン順序が増加して)、CTileの寸法から計算される。寸法から位置を計算するアルゴリズムは、位置から寸法を計算するために前述したアルゴリズムから容易に導出され得る。
【0187】
一実施形態によれば、XPSに記述されたCTileパラメータは存在しないCTileに対してCTile位置(および/またはCTileの寸法)を提供することができ、それらのCTileに対してスライスセグメントは存在しない。このCTileの記述は、位置または寸法のみが提供され、寸法または位置が推論される実施形態において、適切な推論を可能にするために必要である。
【0188】
ビデオレンダリングでは、デフォルトのサンプル値もしくはパディング方法が、存在しないCTileを埋めるために使用される。あるいはパディング方法のインデックスもしくは値がXPSパラメータにおいて提供される。これは例えば、
-適切なデフォルトサンプル値でレンダリングバッファ内のフレームの内容を初期化すること、および/または
-例えば、インペインティング方法を使用することによって、タイルまたはCTileによってカバーされていないすべての領域をパディングすることからなるすべてのフレーム部分が復号された後に、新しいステップを追加すること
からなる(例えば、
図9のステップ900の前の)復号処理の開始時に予備ステップを追加することによって実施することができる。
【0189】
一実施形態によれば、同じ空間位置にある複数のCTile、または重複しているCTileを処理することが可能である。CTile識別子ごとに、関連する復号されたCTileバッファ(HEVCのデコーデッドピクチャバッファ(DPB)と均等物であるが、ここでは復号されたCTileデータのみを含む)がある。所与のフレームに対して、各CTileは、関連する復号されたCTileバッファで使用可能な時間データを使用して復号される。次に、第1の代替によれば、CTileのレンダリング順序は、バイストリーム内のCTile順序と同じ順序である。2番目の代替では、CTileは、XPSデータから決定できるレンダリング順序に関連付けられている。両方の代替について、各CTileの復号結果のサンプルは、CTileのレンダリング順序でレンダリングフレームバッファのフレームに入れられる(次いで、前のCTileによって以前に順序付けられたサンプルをおそらく消去/マスキングする)。
【0190】
一実施形態によれば、CTileサンプルは、レンダリングフレームバッファのフレーム内でCTileをレンダリングするときに適用される透明度のレベルを示すアルファチャネルをさらに含む。あるいは、サンプルがCTileのどのサンプルがレンダリングフレームバッファのフレーム内でレンダリングされなければならないかを示すバイナリマスク値をさらに含む。
【0191】
一実施形態によれば、同じ位置にある複数のCTile、または重複しているCTileを処理することが可能である場合、CTile位置およびCTileサイズの両方がXPSにおいて指定されなければならず、それは、その文脈において一方を他方から推論することが不可能であるからである。
【0192】
任意の所与のポストフィルタリングアルゴリズム(例えば、デブロッキングフィルタ、サンプル適応オフセット、または適応ループフィルタ)の実施形態によれば、CTile境界ポストフィルタリングフラグをXPSで指定して、ポストフィルタリングアルゴリズムがCTileに使用可能であるか否かを示すことができる。CTile境界ポストフィルタリングフラグ、例えば’usable_for_post_filtering_flag’は、所与のポストフィルタリングアルゴリズムがレンダリングフレームバッファのレンダリングされたフレームのCTile境界に適用される可能性があることを示す(時間的復号を修正できるため、デコーデッドピクチャバッファには適用されない)。有利には、例えば、視覚品質を改善することを目的とする。フラグは、フレームレベル全体について、および/またはCTileのそれぞれについて指定することができる。このフラグは、ポストフィルタリングされたときにアーチファクトを導入する傾向があることが知られているいくつかのエッジのフィルタリングを防止するために有用であり得る。例えば、フラグは、適応品質ストリーミングの文脈におけるCTileシャッフリングに対して真であるが、CTile境界が360°コンテンツの立方投射の2つの面の間にあり、面がそのエッジ上で隣接していない場合には偽である。ポストフィルタリングされるCTile境界は、エッジの2つの側がポストフィルタリングを適用することができることを指定しているもの、またはエッジがHEVCタイプのタイルとCTile許可ポストフィルタリングとの間にあるときのものである。
【0193】
代替の実施形態によれば、CTile境界は、デコーデッドピクチャバッファ(DPB)においてポストフィルタリングされてもよく、その実施形態では、復号が任意の復号構成において正しいことを保証するために、インター予測が使用される場合、予測に使用されるサンプルはポストフィルタリングされないサンプルである。したがって、境界拡張メカニズムは境界情報を使用してポストフィルタリングされたもの前の境界上の最後のサンプルに適用され、これは、境界拡張が、フィルタリングされていないサンプルに対して実行されることを意味する。
【0194】
代替の実施形態によれば、2つ以上のCTileが同じCTile識別子を有しても良い。この実施形態では、CTile識別子はCTile集合識別子となる。CTile集合を形成するCTileの設定は、適切に復号されるために、すべて一緒に、かつ同じ相対位置で保持されなければならない。
【0195】
これらの実施形態では、CTile集合の位置およびサイズがXPSから推論される。これは、CTile集合に属するCTileの設定の境界ボックスの位置およびサイズに対応する。したがって、XPSでは、CTile集合識別子が1つまたは複数の位置およびサイズ(CTile集合内の各CTileに対して1つ)に関連付けられる。
【0196】
これらの実施形態では、スライスセグメントヘッダ’ctb_addr_offset_inside_tile’1305情報が、’ctb_addr_offset_inside_tile_set’情報に置き換えられてもよい。’ctb_addr_offset_inside_tile_set’を用いると、どのCTileがスライスセグメントに属しているのかを推定できるので、スライスセグメントの復号時に使用されるジオメトリを推定できる。
【0197】
そのような実施形態のうちの1つでは、CTileのセットの任意のサンプルを、時間的動き補償に使用することができる。動き補償がCTile集合の外側のサンプル値を使用する場合、このサンプル値はCTile集合のいずれか1つの空間的に最も近いサンプルの値に設定される(境界拡張を適用することと同等であるが、2つのCTileによって共有されないCTile境界部分についてのみ)。CTileの外側の任意のサンプルが2つ以上の最も近いCTileサンプルを有する場合、単純な規則を使用して、どのサンプルを使用すべきか、例えば、最小のラスタスキャン順序を有するサンプルを決定する。
【0198】
図15は、CTile識別子をシグナリングするための、
図13a、13b、および13cに示される実施形態の代替の実施形態を示す。現在のブロックベースのコーデック、典型的なHEVCでは、NALユニットヘッダ1501が以下のフィールドを含む:
-0:(偽)に設定された1ビット;
-NALユニットタイプを含む6ビット:(タイプ);
-レイヤ識別子を含む6ビット:(LayerID)、これはHEVCでは常にゼロに等しいが、スケーラブルHEVC(SHVC)ではスケーラブルレイヤインデックスに対応する、もしくはたとえば、マルチビューHEVC(MV-HEVC)ではビューインデックスに対応する。
-時間レイヤ識別子を示す3ビット:(TID)、これはHEVCでは時間的スケーラビリティのための時間レイヤインデックスに対応する。
【0199】
NALユニットヘッダ1501に基づく一実施形態では、エンコーダがビデオシーケンスをフレーム部分に分割する。エンコーダは、各フレーム部分に対して1つの符号化またはスケーラビリティレイヤを使用する。これは、空間領域に基づくレイヤ符号化として見ることができる。エンコーダは、他の領域とは独立して各空間領域レイヤを符号化することができる。このような場合、各空間領域レイヤは、1つのCTileに対応する。この特定のケースでは、符号化時の空間領域レイヤのすべてのスライスは、trueに設定されているctile_flagを有する。主な違いは、各空間領域レイヤをさらにHEVCタイプのタイルに分割できることである。
【0200】
エンコーダは、LayerIdを用いて異なる空間領域レイヤをシグナリングする。これは、LayerIdの値をCTileの識別子に等しく設定する。その結果、CTile識別子は、スライスセグメントヘッダでは必要ない。それは固定ビット長であるので、CTile識別子の処理は、ビデオストリームのフレーム部分をシャフリングするときに単純なままである。
【0201】
エンコーダは、パラメータセットのうちの1つ、例えば、VPSにおいて、フレーム部分構成をシグナリングする。VPSは、空間領域レイヤの固有識別子を、前の実施形態で説明された構文に対応する構文で復号位置と関連付けることによって、各空間領域レイヤの復号位置を示す。
【0202】
エンコーダは、ビデオストリームの異なるレイヤ間の依存関係も記述する。そして、デコーダは、パラメータセットNALユニットに記述されたレイヤ間の依存関係の解析を通じて、他のレイヤとは独立に符号化された空間領域レイヤを決定する。
【0203】
エンコーダは、他の空間領域レイヤとは独立して、空間領域レイヤのサブセットをCTileとして圧縮する。ある空間領域レイヤが前のフレーム(つまり同じCTile識別子を有する)における別の空間領域レイヤ(このレイヤのスライスは、falseに設定されたctile_flagを持つ)に従属する場合、エンコーダは、この従属レイヤからの参照フレームを現在のレイヤのデコーデッドピクチャバッファに追加する。アップサンプリングまたはダウンサンプリングフィルタは、参照フレームが現在のレイヤのサイズに等しいサイズを有するように、2つのレイヤのサイズが異なる場合に適用される。
【0204】
一実施形態によれば、LayerIdは、ctile_flagを推論するためにも使用することができる:LayerIdがゼロのとき、NALユニットは、HEVCタイプのタイルに属している。LayerIdがゼロでない場合、NALユニットはLayerIdと等しいCTile識別子を持つCTileに属する。あるいは、LayerIdの1ビットは、ctile_flagをシグナリングするために予約される。LayerIdを使用してCTile識別子を転送する利点は、CTileを抽出するためにビットストリームを解析する複雑さが大幅に軽減されることである。
【0205】
別の実施形態では、空間領域スケーラビリティが、HEVCにおける時間的スケーラビリティと同様に定義され、すなわち、異なるレイヤ識別子は他のスケーラビリティレイヤ(例えば、SNR、解像度、マルチビュー)から時間空間領域を識別する。実際、このアプローチの利点は、空間領域スケーラビリティおよびSNRまたは解像度スケーラビリティレイヤの両方を使用することが可能である、ということである。
【0206】
NALユニットヘッダ1502は、現在フレーム部分識別子を示すランダムアクセス識別子(RAID)で拡張される。LayerIdセマンティクスは、HEVCと同じままであり、すなわち、マルチビュー、SNR、または解像度スケーラビリティレイヤを示す。
【0207】
エンコーダは、各空間領域レイヤの位置を、そのRAID値を、パラメータセットのうちの1つ、例えばVPS内の復号位置に関連付けることによって指定する。空間領域を符号化する各NALユニット(SPS、PPSおよびVCL NALユニットを含む)は、空間領域に対応するフレーム部分識別子(CTile(set)識別子)に等しいRAIDを有する。
【0208】
結果として、上述のマージ処理(ビデオビットストリームのセットからCTileを抽出し、それらを新しいビデオビットストリームに結合することからなる)は、結合するビデオストリームに関連するフレーム部分構成からマージするために空間領域レイヤのCTile識別子を抽出する。そして、抽出した識別子の組に等しいRAID値を有するNALユニットを全て抽出する。
【0209】
2つのビデオシーケンスを結合するときの識別子の衝突のリスクを制限するために、エンコーダは、RAID値をランダム値で設定する。これは、ビデオシーケンスが単一のフレーム部分を含むケースを含む。
【0210】
一実施形態によれば、RAIDは、空間領域がCTileであるかどうかを指定する(スライスセグメントヘッダ内のctile_flagのシグナリングを置き換える):RAIDがゼロのとき、NALユニットはHEVCタイプのタイルに属する。RAIDがゼロでない場合、NALユニットはRAIDに等しい識別子を持つCTileに属する。あるいは、RAIDの1ビットはctile_flagをシグナリングするために確保される。代替の実施形態では、より多くのCTileを可能にするために、RAID識別子は16ビットまたは24ビットである。
【0211】
一実施形態によれば、CTileのシーケンスは、独立したビットストリームと見なされる。例えば、いくつかの実施形態では、同じ識別子を有するCTileのシーケンス順序が、別の識別子を有するCTileのシーケンス順序とは異なり得る(すなわち、GOP構造は、2つのCTileの間で異なり得る)。したがって、同じフレーム内の2つのCTileは、異なるNALユニットタイプまたはTIDを有することができる。
【0212】
別の実施形態では、XPSは、デコーダが誤差無しでCTileを処理できる方法で、CTile間の何らかの依存関係を記述する追加情報を含む。CTileの独立性は、各CTileのレベルではなく、CTileのセットのレベルで考えられることが分かった。この構成では、CTile集合内の幾つかのCTileが幾つかの依存関係を持つことがある。
【0213】
例えば、
図16aは、CTileごとの依存関係リストを含むXPSを示す。依存関係リストは、識別子1600を有する所与のCTileに依存するCTile識別子1601を提供する。所与のCTileが別のCTileとの依存関係を有するものとして示される場合、所与のCTileが他のCTileなしでは抽出できないことを意味する。
【0214】
図16bは、CTile依存関係の第1の例を示す。現在のフレーム1602内のCTile #1は、前の符号化フレーム1603から動き補償を実行するときにCTile #2からのサンプル値を使用し、CTile #2は、CTile #1からのサンプル値を使用する。このような例では、XPSは、識別子#1を有するCTileが識別子#2を有するCTileとの依存関係を有し、識別子#2を有するCTileが識別子#1を有するCTileとの依存関係を有することを示している。これらの相互依存関係のシグナリングは、CTileセットのシグナリングの代替である。
【0215】
図16cは、CTile依存関係の第2の例を示す。このような例では、CTile #3が、フレーム1604および1607内のCTile #1および#2に対する依存関係として、フレーム1605および1607内に存在する。このような例では、CTile #1および#2も抽出せずにCTile #3を抽出することはできない。しかし、CTile#1および#2は、依存関係を有さず、単独で抽出することができる。実施形態によれば、このシナリオは例えば、フレーム1604~1606が時間的に順序付けられている場合に、様々なフレームレートでCTileの抽出を容易にするために適用することができる。あるいは、例えば、フレーム1605がフレーム1604のリファインメントレイヤであり、フレーム1607がフレーム1606のリファインメントレイヤである場合、異なる品質レイヤのCTileの抽出を容易にするために、スケーラブル符号化に使用することができる。
【0216】
いくつかの実施形態によれば、CTileは、連続するフレーム間で空間的位置またはサイズを変更することができる。
【0217】
実施形態によれば、’タイルパラメータセット’、TilePSも導入される。TPSは、CTileのサブセットのCTileパラメータ(移動および/またはサイズの変更のみ)を更新でき、例えば、’num_updated_tiles’値を含み、次に’num_updated_tiles’修正されたCTileの新しいプロパティにタイル識別子を関連付ける。
【0218】
古典的には、動きベクトルは、符号化するブロックと一緒に配置されたブロックに対する参照画像内の予測ブロックの位置を与える。符号化する所与のブロックについて、最初のステップは、参照画像の中で、併置されたブロックを識別することである。併置されたブロックは、符号化されるブロックと同じ原点(左上の位置)および同じサイズを意味する、同じ位置を有する参照画像内のブロックとして定義される。次に、動きベクトルを、併置されたブロックの原点に適用して、予測ブロックの原点を決定する。
【0219】
CTileを考慮する場合、併置されたブロックの決定は、CTile内で同じ位置を有し、もはやフレーム内ではないブロックを考慮するように適用される。CTileがシャッフルされたとき、フレーム内のその位置が、符号化時のフレーム内のその位置に対して復号時にフレーム内で修正されていることを意味する。しかしながら、予測が独立した復号を保証するためにCTile内に拘束されることを考慮すると、CTile内の符号化ブロックに併置されたブロックに動きベクトルを適用することによって、正しい予測ブロックを依然として決定することができる。これは、CTileがフレーム毎にそのサイズ及び位置を保持する限り、真実である。CTileがフレーム内のその位置および/または2つの連続するフレーム間のそのサイズを変化させるときに、困難が生じる。この場合、エンコーダおよびデコーダは、予測ブロックを正確に決定するために動きベクトルが適用される参照フレーム内の併置されたブロックの位置を決定する方法に同意する。
【0220】
CTileが連続的に符号化されたフレーム間で位置またはサイズを変化させることができる実施形態によれば、2つの連続するフレームにおけるCTileの相対位置は、2つの異なるビットストリームにおいて同じでなくてもよい。
図17は、第1のビットストリームがビデオ監視1700のフレームを含む、そのような実施形態の例を提供する。第1のフレーム1701には、所与のctile_idを有する移動注目領域のCTile1702を含むいくつかのsptailフレーム部分がある。別のフレーム1703では、所与のctile_idを有するCTileが移動し、サイズ1704を変更している。第2のビットストリームは、1700から抽出されたCTileをアセンブルすることによって生成されたビデオ1705を含み、生成されたCTileは均一な色(例えば、黒)を含む。第1のフレーム1706において、所与のctile_id1702を有するCTileは、第1のビットストリームから抽出され、フレーム1707の中心に置かれる。別のフレーム1708では、所与のctile_id1704を有するCTileが第1のビットストリームから抽出され、フレーム1709の中心に置かれている。第1のビットストリームでは、CTile1704は、CTile1701への時間的参照とともにインター予測を使用する。したがって、生成されたビデオ1705において、CTile1709は、CTile1707への時間的参照を伴うインター予測を使用する。CTile1702と1704との間の相対空間位置は、1707と1709との間と同じではない。したがって、復号相対位置が何であれ、適切に復号されるために、インター予測モードが使用されるとき、符号化動きベクトルは、CTile位置の変化(すなわち、連続するフレーム間の相対空間位置)を考慮に入れない。
【0221】
第1の代替によれば、動きベクトルは、2つの連続して符号化されたフレームにおけるCTileの所定の基準点が同じ空間位置(例えば、上部左、上部右、下部左、下部右、中央上部、中央下部、中央左、中央右または中央)にあるかのように計算される。したがって、符号化動きベクトルは、フレームリファレンシャル内のブロックの動きベクトルからCTileの基準点間の動きベクトルを引いたものに対応し、フレームリファレンシャル内の動きベクトルも対応し、したがって、CTileに対するリファレンシャル内の動きベクトルが得られる。その結果、CTileは、後の空間的変化とは独立して復号可能である。
【0222】
図17bは、参照フレーム1713内に同じctile_idを有する参照CTile1712を使用して、フレーム1711内に符号化されたCTile1710の場合を示す。ブロック1714は、フレーム1716内の動きベクトルと、所定の基準点1717(その例では、所定の基準点はCTileの左上隅である)間の動きベクトルと、の間の差に対応する動きベクトル1715を使用して符号化される。
図17bはまた、CTileの相対時間復号位置が符号化位置と同じでない場合でも、復号フレーム1720内の動きベクトルを得るために、復号フレーム1719内の所定の基準点間の動きベクトルにそれを加えることによって、ブロック1718を復号するときに、符号化ベクトル1715が依然として有効であることを示す。
【0223】
第2の代替によれば、動きベクトルは、CTileの所与の点が2つの連続して符号化されたフレーム内の同じ空間位置にあるかのように計算される。所与の点は、所定の点(たとえば、上-左、上-右、下-左、下-右、中-上、中-下、中-左、中-右、または中央)のリスト内のインデックスとして、CTile符号化データでシグナリングされる。
【0224】
第3の代替によれば、固定点(または代替的にシグナリングされた点)が考慮され、動きベクトルがCTile符号化データにおいて符号化される。CTile符号化データにおいて符号化された動きベクトルは、2つの連続して符号化されたフレーム内のCTileの固定(またはシグナリングされた)点が同じ空間位置にあることを考慮すると、CTile内の時間予測に関連するインター動きベクトルのそれぞれに追加される動きベクトルを提供する。それは、エンコーダが動きベクトルの符号化コストを低減することを可能にする。例えば、エンコーダは、CTileの動き補償ブロックの平均動きベクトルを選択することができる。例えば
図17bを見ると、この平均動きベクトルは、ベクトル1715に差し引かれる。この差し引きの結果を、符号化対象の動きベクトルとする。結果に関して同等である代替は、固定小数点または固定小数点インデックスおよび動きベクトルの代わりに(またはそれに加えて)、符号化されたCTile内の基準点の(サブ)ピクセル位置を提供することである。
【0225】
第4の代替によれば、固定点(又は代替的にシグナリングされた点)が考慮される。CTile符号化データには、動きベクトルフィールドのパラメータが符号化される。動きフィールドは、2つの連続的に符号化されたフレーム内のCTileの固定(またはシグナリングされた)点が同じ空間位置にあることを考慮するとき、CTile内の時間予測に関連するインター動きベクトルのそれぞれに追加される動きベクトルを決定することを可能にする。例えば、エンコーダは、CTile内のブロックの動きベクトルを推定することができ、そしてそれらの残差を最小化し且つそれらの符号化のコストを低減するために、それらの予測を最小化する動きベクトルフィールドを推定することができる。次に、インター符号化ブロックの各動き補償ベクトルは、動きベクトルフィールドパラメータから計算された動きベクトルを動き補償ベクトルに減算した結果である(例えば、1715)。
【0226】
実施形態によれば、インター予測モードは、2つ以上の以前に符号化された参照フレームを参照することができる。その実施形態では、前述の実施形態を拡張して、CTileの固定(またはシグナリングされた点)が符号化フレームおよびすべての参照フレーム内で整列されることを考慮することができる。
【0227】
動きベクトルまたは動きベクトルフィールドがシグナリングされる実施形態では、複数フレームへの拡張が2つの代替方法で行うことができる。
-参照フレームの数と同じ数の動きベクトル(または動きベクトルフィールドパラメータ)をシグナリングすることによって、または
-符号化フレームとの時間的な差に従って、各参照フレームについて1つの動きベクトル(または動きベクトルフィールド)を導出するために使用される1つの動きベクトル(または動きベクトルフィールド)’x’だけをシグナリングすることによって
のいずれか
【0228】
例えば、線形スケーリングが使用される。参照フレームの時間的な位置が’t-s’(ここで、’s’は、フレーム間の一定の時間的なサンプリング周期であり、’t’は時間である)であり、符号化フレームの時間的な位置が’t’である場合、使用されるスケーリングファクタは’(t)/s-(t-s)/s=1’であるが、参照フレームの時間的な位置が’t+2s’である場合、使用されるスケーリングファクタは’(t)/s-(t+2s)/s=-2’である。スケーリングファクターは、各参照フレームの動きベクトルを計算するために適用される。例えば、
図17bを見ると、参照フレーム1713が’t+2s’である場合、動きベクトル1715は-2
*’x’減算される。減算の結果’y’は、符号化される動きベクトルの値である(例えば、符号化モードがHEVCのインター予測モードである場合、’y’は、動きベクトル予測インデックスを使用して予測される動きベクトルである)。言い換えれば、デコーダ側では、動きベクトル’y’は、動き補償されたブロックに対して復号され、次に、それが-2
*’x’に加算されてベクトル1715が得られる。さらに、動きベクトル1717を加算して、フレームレベルの動きベクトルを得る。
【0229】
図12は、前の説明で述べたように、ビットストリームがより高いレベルの記述フォーマットにカプセル化されているときの、エンコーダ側のカプセル化ステップ906または1105の詳細を提供する。
【0230】
好ましい実施形態では、CTileを有するビデオビットストリームがISO Base Media File Format(ISOBMFF、ISO/IEC14496-12および14496-15)に従ってカプセル化される。
図12に関連する以下の説明では、”フレーム”に対応する単語”サンプル”、すなわち、ISOBMFFについて定義されるような、符号化ピクチャに対応するビデオビットストリームからのNALユニットのセットに対応する。
【0231】
カプセル化は、ISOBMFFまたはmp4ライタによって処理される。このライターは、NALユニットヘッダのパーサを含む。NALUタイプ、識別子、および対応する圧縮データを抽出することができる。典型的には、抽出されたNALUデータがカプセル化されたファイルのメディアデータコンテナ:’mdat’ボックスに配置される。NALユニットの記述のためのメタデータは、メインの’moov’ボックスの下のボックスの構造化された階層に配置される。ビデオトラックにカプセル化された1つのビデオビットストリームは、そのサブボックスを有する’trak’ボックスによって記述される。
【0232】
分割されたビデオフレームについては、ビデオの予測される使用に応じて、異なる可能なカプセル化が存在する。この使用は、mp4ライタアプリケーションにおいてハードコーディングすることができ、あるいは、例えば初期化ステップ1200において、あるユーザまたは別のプログラムによって入力パラメータとして提供することができる。一実施形態では、1つのフレーム部分またはフレーム部分の所与のセットを1つのビデオトラックにカプセル化し、したがってマルチトラックカプセル化につなげることが便利であり得る。
【0233】
ISOBMFFライタの初期化が行われると、エンコーダは、ステップ1201において、NALUタイプ、特にパラメータセット(XPS)に対応するものを読み出すことによって、ビデオビットストリームの構文解析を開始する。既に上述したように、パラメータセットは、ビデオビットストリームの符号化構成に関する高レベルの一般的な情報を提供する特定のNALユニットである。
【0234】
これらのパラメータセットの構文解析から、mp4ライタは、テスト1202において、ビデオビットストリームがフレーム部分を含むかどうかを決定することができる(例えば、パラメータセットの1つにTPSまたは特定の分割構成が存在するかどうか)。フレーム部分が存在する場合、mp4ライタは、同じテスト1202で、これらが”制約タイル”、すなわちCTileであるかどうかを判定する。ビットストリームがフレーム部分を含まないか、CTileを含まない場合、テスト1202は偽であり、ビデオビットストリームはステップ1203で1つのビデオトラックとしてカプセル化される。
【0235】
TPS(Tiling Parameter Set)は、パラメータセット情報の1つのNALUと見なされ、デコーダ設定を提供するメタデータに埋め込むか、DecoderConfigurationRecordボックスのようなセットアップ情報を提供するメタデータに埋め込むことができる。この情報は、’stsd’ボックスなどのサンプル記述専用のボックスの1つにある。通常、一部のコーデック固有のサンプルエントリにある。
【0236】
あるいは、本発明の一実施形態によれば、TPSは、ビデオデータのためのNALユニット(VCL NALU)として処理され、’mdat’ボックスに1つのサンプルデータとして記憶されることができる。それはまた、サンプルエントリおよびサンプルデータの両方に存在してもよい。フレーム部分構成がビデオシーケンスに沿って変化する場合、それをサンプル記述レベル(サンプルエントリ)よりもサンプルレベル(サンプルデータ)に記憶する方が便利である。
【0237】
フレーム部分分割構成の変更が受信側でデコーダをリセットすることを必要とする場合、ISOBMFFライタは、ビデオビットストリームからのTPSおよびCTile関連情報をサンプルエントリに格納することが好ましい。このデコーダリセットにより、ファイルを受信または消費するデバイスは、新しい分割構成を考慮に入れることができる。新しい分割構成は例えば、処理するデータの量(すなわちレベル)をサポートするための符号化ツール(すなわち、プロファイル)の指示を含むことがある。分割構成のプロファイルとレベルの値、またはその他のパラメータによっては、デバイスが新しい分割構成をサポートする場合としない場合とがある。サポートしない場合、デバイスは、伝送に適応したり、利用可能な場合はビデオの代替バージョンを選択したりすることがある。新しい分割構成がサポートされる場合、デバイスは、ファイルの復号とレンダリングを続行する。
【0238】
ROIへの空間アクセスが必要とされる場合、テスト1204の後のブランチ”yes”において、ISOBMFFライタは、ユースケースに応じて異なるカプセル化ストラテジを有することができる。空間アクセスは、例えば、ROIまたはパーティションベースのディスプレイ(すなわち、フレーム部分のセットまたはフレーム部分または部分またはROIに対応するデータの部分のみの抽出および復号)、またはROIまたは部分ベースのストリーミング(すなわち、フレーム部分のセットまたは部分またはROIに対応するデータおよびメタデータの部分のみを送信する)を意味する。予測されるユースケースが、真であるテスト1205に対応するローカルディスプレイのための記憶である場合(ブランチ”yes”)、分割されたビデオビットストリームを1つのトラックに記憶するが、空間アクセスが必要とされるROIまたはフレーム部分またはフレーム部分のセットへのNALUマッピングを含むことが好都合であり得る。NALUマッピングは、ステップ1206で生成される。これは、ISOBMFFライタについて、ビデオビットストリームの各NALUについて、所与のCTileに関連するか、または同じランダムアクセス識別子(
図15のRAID基準1502)を有する(すなわち、選択可能かつ復号可能なフレーム部分または空間領域に対応する)NALユニットをリストすることからなる。リスティングを実行できるようにするために、ISOBMFFライタのNALUパーサモジュールは、ビットストリーム生成の実施形態に応じて、ステップ903において空間アクセスが必要とされるROIまたはフレーム部分またはフレーム部分のセットに割り当てられた識別子の値をチェックする。
【0239】
ビットストリームがNALUヘッダに、空間アクセスが必要なフレーム部分のセットまたはフレーム部分またはROIについて固有の識別子を含まない場合、ISOBMFFライタは、スライスヘッダパーサを要求して、903で割り当てられたCTileの識別子の値を取得し、例えば
図13aの1301で参照されているctile_unique_identifier)。
【0240】
次に、NALUMapEntry構造’nalm’が、ステップ1206において、’trak’ボックス階層下のボックスとして作成され、NALUのリストおよびフレーム部分またはフレーム部分のセットへのそれらのマッピングが格納される。フレーム部分またはフレーム部分のセットごとに、タイプ’trif’のSampleGroupDescriptionBoxは、フレーム部分またはフレーム部分のセットごとに、フレーム部分またはフレーム部分のセットの記述を提供し、たとえば、ISO/IEC14496-15からのTileRegionGroupEntryのパラメータを提供する。フレーム部分識別子’trif’のgroup_ID値は、カプセル化するCTileの識別子の値に設定される。
【0241】
次に、ステップ1203で、すべてのフレーム部分またはフレーム部分のセットのデータが単一トラックとしてカプセル化される。テスト1208が真(ブランチ”yes”)であることに対応して、ユースケースがストリーミングである場合、テスト1208が真である場合、ビデオ内の空間アクセスレベルに対応する各フレーム部分またはフレーム部分のセットを専用トラックに分割することが便利であり得、単一トラックカプセル化が行われる。
【0242】
ストリーミングユースケースでは、フレーム部分またはフレーム部分のセットごとに、ステップ1209において、NALUマッピングに関するフレーム部分記述が生成される。フレーム部分またはフレーム部分のセットの数は、TPSを構文解析することによって決定することができる。’trif’サンプルグループが使用され、ステップ1210で生成されたフレーム部分トラック(1つのフレーム部分またはフレーム部分のセットに関連するデータをカプセル化するためのトラック)当たり1つのフレーム部分またはフレーム部分の1セットがあるので、デフォルトサンプルグループでさえ使用され得る。次に、すべてのサンプルは、ISO/IEC14496-15に従ってフレーム部分記述子’trif’である同じサンプルグループ記述にマッピングされる。フレーム部分記述子’trif’のgroup_ID値は、カプセル化するCTile(または存在する場合はRAID)の識別子の値に設定される。
【0243】
次に、ステップ1210で、各フレーム部分またはフレーム部分のセットが、それ自体のトラック、フレーム部分トラックに挿入される。フレーム部分トラックは、サンプルが実際にビデオの空間部分であることを示し、カプセル化すべきフレーム部分またはフレーム部分セットが残っていない場合には、ステップ1212で作成されたフレーム部分ベーストラックを参照する特定のサンプルエントリを含む、テスト1211。このフレーム部分ベーストラックは、タイリングパラメータセット(TPS)を含むパラメータセットに対応する特定のNALユニットを含む。フレーム部分ベーストラックは、特定のトラック参照タイプで順番に各フレーム部分トラックを参照し、フレーム部分またはフレーム部分のセットの任意の選択の暗黙の再構成を可能にする。ステップ1212は、エクストラクタと呼ばれるNALユニットが1つまたは複数のフレーム部分トラックから明示的な再構成を提供する複合トラックに置き換えることができる。
【0244】
エクストラクタは次に、フレーム部分またはフレーム部分のセットの所与の識別子を指すエクストラクタを単に有することによって、通常、対応するCTile(または、ある場合にはRAID)の識別子を参照することによって、元のフレーム部分とは異なるフレーム部分またはフレーム部分のセットの任意の構成を、複合トラックの各サンプルについて、可能にする。
【0245】
ステップ1212において複合トラックを使用する場合、ステップ1210におけるフレーム部分トラックは実際には復号可能なフレーム部分トラックであってもよく、これは、それぞれが(1209において生成された)フレーム部分記述およびパラメータセットを含むことを意味する。各フレーム部分トラックにおけるTPSの存在は、エクストラクタが異なるように再結合することができるので、オプションである。次に、サンプル記述は、使用中のコーデックに準拠するサンプルエントリを示すことができる。例えば、HEVCが使用中の場合は’hvc1’または’hvc2’、AVC(Advanced Video Coding)が使用中の場合は’avc1’または’avc2’、使用中のビデオコーダを明確に識別するために予約された4文字コーダである。
【0246】
図18は、本発明の1つまたは複数の実施形態を実施するためのコンピューティングデバイス1800の概略ブロック図である。コンピューティングデバイス1800は、マイクロコンピュータ、ワークステーション、またはライトポータブルデバイスなどのデバイスとすることができる。コンピューティングデバイス1800は、
-CPUで示されるマイクロプロセッサなどの中央処理ユニット1801;
-本発明の実施形態の方法の実行可能コード、ならびに本発明の実施形態による方法を実施するために必要な変数およびパラメータを記録するように適合されたレジスタを格納するための、RAMで示されるランダムアクセスメモリ1802であり、そのメモリ容量は例えば、拡張ポートに接続された任意のRAMによって拡張することができる;
-本発明の実施形態を実現するためのコンピュータプログラムを記憶するためのROMで示される読み出し専用メモリ1803;
-ネットワークインターフェース1804は、典型的には処理されるデジタルデータが送受信される通信ネットワークに接続される。ネットワークインターフェース1804は、単一のネットワークインターフェースであってもよいし、異なるネットワークインターフェースのセット(例えば、有線および無線インターフェース、または異なる種類の有線または無線インターフェース)から構成されてもよい。データパケットは、送信のためにネットワークインターフェースに書き込まれるか、またはCPU1801内で実行されているソフトウェアアプリケーションの制御の下で受信のためにネットワークインターフェースから読み出される;
-ユーザインターフェース1805は、ユーザからの入力を受信するため、またはユーザに情報を表示するために使用されてもよい;
-HDと示されるハードディスク1806は、大容量記憶装置として提供されてもよい;
-入出力モジュール1807は、ビデオソースまたはディスプレイなどの外部装置との間でデータを送受信するために使用することができる
に接続された通信バスを備える。
【0247】
実行可能コードは、読み出し専用メモリ1803、ハードディスク1806、または例えばディスクのようなリムーバブルデジタル媒体のいずれかに格納することができる。変形例によれば、プログラムの実行可能コードは、実行前に、ハードディスク1806などの、通信装置1800の記憶手段の1つに記憶されるために、ネットワークインターフェース1804を介して、通信ネットワークの手段によって受信することができる。
【0248】
中央処理ユニット1801は、本発明の実施形態によるプログラムまたは複数のプログラムのソフトウェアコードの一部または命令の実行を制御し、指示するように適合され、命令は前述の記憶手段の1つに格納されている。電源投入後、CPU1801は例えば、プログラムROM1803またはハードディスク(HD)1806からそれらの命令がロードされた後に、ソフトウェアアプリケーションに関するメインRAMメモリ1802からの命令を実行することができる。このようなソフトウェアアプリケーションは、CPU1801によって実行されると、本発明のフローチャートの各ステップを実行する。
【0249】
本発明のアルゴリズムの任意のステップは、PC(”パーソナルコンピュータ”)、DSP(”デジタルシグナルプロセッサ”)、またはマイクロコントローラなどのプログラマブルコンピューティングマシンによる命令またはプログラムのセットの実行によってソフトウェアで実施することができ、あるいは、FPGA(”フィールドプログラマブルゲートアレイ”)またはASIC(”特定用途向け集積回路”)などのマシンまたは専用コンポーネントによってハードウェアで実施することができる。
【0250】
以上、特定の実施形態を参照して本発明を説明したが、本発明は特定の実施形態に限定されるものではなく、本発明の範囲内における変更は当業者には明らかであろう。
【0251】
多くのさらなる変更および変形は、単に例として与えられ、添付の特許請求の範囲によってのみ決定される本発明の範囲を限定することを意図しない、前述の例示的な実施形態を参照することにより、当業者に示唆されるのであろう。特に、様々な実施形態からの異なる特徴は、適宜、交換されてもよい。
【0252】
上述した本発明の各実施形態は単独で実施してもよいし、複数の実施形態の組み合わせとして実施してもよい。また、様々な実施形態からの特徴は、必要な場合、または単一の実施形態における個々の実施形態からの要素または特徴の組み合わせが有益である場合に組み合わせることができる。
【0253】
本明細書に開示される各特徴(添付の特許請求の範囲、要約および図面を含む)は、明示的に別段の記載がない限り、同一の、同等の、または類似の目的を果たす代替的特徴に置き換えることができる。したがって、特に断らない限り、開示される各特徴は、同等または同様の特徴の一般的なシリーズの一例にすぎない。
【0254】
特許請求の範囲において、単語”有する(comprising)”は、他の要素又はステップを排除するものではなく、不定冠詞「a」又は「an」は複数を排除するものではない。異なる特徴が相互に異なる従属請求項に記載されているという単なる事実は、これらの特徴の組合せが有利に使用されることができないことを示すものではない。