(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】メディアデータをメディアファイルにカプセル化するための方法、装置、およびコンピュータプログラム
(51)【国際特許分類】
H04N 21/236 20110101AFI20240228BHJP
H04N 21/434 20110101ALI20240228BHJP
【FI】
H04N21/236
H04N21/434
(21)【出願番号】P 2021522002
(86)(22)【出願日】2019-11-22
(86)【国際出願番号】 EP2019082192
(87)【国際公開番号】W WO2020109154
(87)【国際公開日】2020-06-04
【審査請求日】2022-11-14
(32)【優先日】2018-11-29
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】ドゥヌアル, フランク
(72)【発明者】
【氏名】ウエドラオゴ, ナエル
(72)【発明者】
【氏名】マゼ, フレデリック
(72)【発明者】
【氏名】ル フェーブル, ジャン
【審査官】大西 宏
(56)【参考文献】
【文献】特表2013-505646(JP,A)
【文献】特表2018-524877(JP,A)
【文献】国際公開第2017/029400(WO,A1)
【文献】国際公開第2017/140945(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 -21/858
(57)【特許請求の範囲】
【請求項1】
メディアデータをメディアファイルにカプセル化する方法であって、該方法は、
それぞれ1つまたは複数のNALユニットのセットを含む複数
のサンプルを含む第1のトラックを前記メディアファイルに含めるこ
とと、
前記第1のトラックに含まれるサンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットを参照する参照構造を有する抽出器を含む第2のトラックを前記メディアファイルに含めるこ
とと、
を含み、
前記抽出器は、前記サンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットに
含まれるデータエンティティ
を識別
してコピーする
モードを、予め定められた複数のモードから指定する情報を含むコピーモード属性を
含む
方法。
【請求項2】
前記
複数のモー
ドは、
前記データエンティティが前記サンプルに含まれる全てのNALユニットのセットを含む第1のモード、
前記データエンティティが前記NALユニットのセットの1つのNALユニットを含む第2のモード、
前記データエンティティが前記NALユニットのセットの1つのNALユニットのペイロードを含む第3のモード、
前記データエンティティが前記NALユニットのセット内の指定された位置にある1つのNALユニットを含む第4のモード、
前記データエンティティが前記NALユニットのセット内の指定された位置にある1つのNALユニットのペイロードを含む第5のモード、
の1つまたは複数を含む
請求項
1に記載の方法。
【請求項3】
前記第2または前記第3のモードにおいて、前記1つのNALユニットは前記サンプル内の最初のNALユニットである
請求項
2に記載の方法。
【請求項4】
前記第2または前記第3のモードにおいて、前記1つのNALユニットは前記サンプル内の最後のNALユニットである
請求項
2に記載の方法。
【請求項5】
メディアファイルを生成する方法であって、該方法は、
メディアコンテンツをメディアデータに符号化することと、
請求項1に記載の方法に従って、前記メディアデータを複数のトラックにカプセル化することと、
前記カプセル化されたメディアデータを含む少なくとも1つのメディアファイルを生成することと、
を含む方法。
【請求項6】
メディアファイルを送信する方法であって、該方法は、
請求項
5に記載の方法に従ってサーバ機器によってメディアファイルを生成することと、
前記生成されたメディアファイルをクライアント機器に送信することと、
を含む方法。
【請求項7】
メディアデータを生成するためにメディアファイルをパースする方法であって、該方法は、
第2のトラックに含まれるサンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットを参照する参照構造を有する抽出器を含む第1のトラックを前記メディアファイルから取得するこ
とと、
それぞれ1つまたは複数のNALユニットのセットを含む複数
のサンプルを含む前記第2のトラックを前記メディアファイルから取得するこ
とと、
前記抽出器に含まれるコピーモード属性によって識別され
るデータエンティティを前記第2のトラック
のサンプルから取得することと、
を含み、
前記コピーモード属性は、前記
サンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットに
含まれるデータエンティティ
を識別
してコピーする
モードを、予め定められた複数のモードから指定する情報を含む
方法。
【請求項8】
メディアデータをメディアファイルにカプセル化するコンピュータデバイスであって、該コンピュータデバイスは、
それぞれ1つまたは複数のNALユニットのセットを含む複数
のサンプルを含む第1のトラックを前記メディアファイルに含め
る手段と、
前記第1のトラックに含まれるサンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットを参照する参照構造を有する抽出器を含む第2のトラックを前記メディアファイルに含め
る手段と、
を備え、
前記抽出器は、前記サンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットに
含まれるデータエンティティ
を識別
してコピーする
モードを、予め定められた複数のモードから指定する情報を含むコピーモード属性を
含む
ように構成されているコンピュータデバイス。
【請求項9】
メディアデータを生成するためにメディアファイルをパースするコンピュータデバイスであって、該コンピュータデバイスは、
第2のトラックに含まれるサンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットを参照する参照構造を有する抽出器を含む第1のトラックを前記メディアファイルから取得
する手段と、
それぞれ1つまたは複数のNALユニットのセットを含む複数
のサンプルを含む前記第2のトラックを前記メディアファイルから取得
する手段と、
前記抽出器に含まれるコピーモード属性によって識別され
るデータエンティティを前記第2のトラック
のサンプルから取得
する手段と、
を備え、
前記コピーモード属性は、前記
サンプルまたは当該サンプル内に含まれる1つまたは複数のNALユニットに
含まれるデータエンティティ
を識別
してコピーする
モードを、予め定められた複数のモードから指定する情報を含む
ように構成されているコンピュータデバイス。
【請求項10】
請求項1乃至
7の何れか1項に記載の方法を実施するためのコンピュータプログラムの命令を格納したコンピュータ可読記憶媒体。
【請求項11】
実行すると請求項1乃至
7の何れか1項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メディアデータをカプセル化して送信するための方法および装置に関するものである。
【背景技術】
【0002】
国際標準化機構のベースメディアファイルフォーマット(ISOBMFF、ISO/IEC14496-12)は、ローカルストレージまたはネットワーク経由または別のビットストリーム配信メカニズムを介した送信のいずれかのための、符号化された時間指定メディアデータビットストリームを記述する、周知の柔軟かつ拡張可能なフォーマットである。拡張の例としては、様々なNAL(ネットワーク抽象層)ユニットベースのビデオ符号化フォーマットのためのカプセル化ツールを記述したISO/IEC14496-15がある。そのような符号化フォーマットの例は、AVC(アドバンスドビデオコーディング)、SVC(スケーラブルビデオコーディング)、HEVC(高効率ビデオコーディング)、およびL-HEVC(レイヤードHEVC)である。また、ファイルフォーマット拡張の他の例には、HEVCスチル画像などの静止画や静止画シーケンスのカプセル化ツールを記述したISO/IEC23008-12がある。また、また、ファイルフォーマット拡張の他の例には、全方向メディアアプリケーションフォーマット(OMAF)を定義したISO/IEC23090-2がある。ISOベースメディアファイルフォーマットはオブジェクト指向である。タイミングや構造パラメータなど、符号化された時間指定メディアデータビットストリームのパラメータを定義するボックス(または4文字コードで特徴づけられるデータ構造)と呼ばれるビルディングブロックで構成されている。
【0003】
ファイルフォーマットでは、全体のプレゼンテーションをムービーと呼ぶ。ムービーは、メディアやプレゼンテーションファイルのトップレベルにあるムービーボックス(4文字コード「moov」)によって記述される。このムービーボックスは、プレゼンテーションを記述する様々なボックスのセットを含む初期化情報コンテナを表す。これは、複数のトラックボックス(4文字コード「trak」)で表される複数のトラックに論理的に分割されている。各トラック(トラック識別子(track_ID)によって一意に識別される)は、プレゼンテーションに属するメディアデータの時間指定シーケンス(例えば、ビデオのフレーム)を表す。各トラックの中で、時間指定されたデータの各ユニットはサンプルと呼ばれ、これはビデオ、オーディオ、または時間指定されたメタデータのフレームである。サンプルには暗黙のうちに連続した番号が付けられている。実際のサンプルデータは、ムービーボックスと同じ階層にあるメディアデータボックス(4文字コード「mdat」)と呼ばれるボックスに格納される。サンプルの説明は、ファイルのメタデータ部分のサンプルテーブルボックスに格納されている。ムービーは、プレゼンテーション全体の情報を格納したムービーボックスの後に、カップルムービーフラグメントとメディアデータボックスのリストが続くように、時間的に組織化することができる。1つのムービーフラグメント(4文字コード「moof」のボックス)の中には、1つのムービーフラグメントにつき0個以上のトラックフラグメント(4文字コード「traf」のボックス)のセットがある。トラックフラグメントには、0個以上のトラックランボックス(「trun」)が含まれており、それぞれがそのトラックフラグメントの連続したサンプルを記録している。
【0004】
ISOBMFFファイルは、複数の符号化された時間指定メディアデータのビットストリームや、複数のトラックを形成する符号化された時間指定メディアデータのビットストリームのサブパートを含み得る。サブパートが、時間をかけて撮影ビデオソースの1つまたは連続した空間的な部分に対応している場合(例えば、時間をかけて撮影された少なくとも1つの長方形の領域(「タイル」と呼ばれることもある)、対応する複数のトラックはサブピクチャートラックと呼ばれ得る。ISOBMFFとその拡張機能は、トラック、スタティックアイテム、またはサンプルをグループ化するためのいくつかのグループ化メカニズムを備えている。グループは、通常、共通のセマンティックおよび/または特性を共有する。
【0005】
発明者らは、送信されるメディアデータに関する情報を記述およびシグナリングする際に、特に、あるトラックが別のトラックを参照しているときの複数のトラックについて、いくつかの問題に気づいた。
【0006】
一例は、特定のパース処理を要求する別のトラックで参照されるデータエンティティのクライアントからのシグナリングであり、これはオーバーヘッドを発生させ、複雑である。
【0007】
別の例は、合成トラックを形成するためにトラックのグループからコピーされるデータエンティティのシグナリングがあり、特に、合成トラックがこれらのトラックのグループ間の関係のタイプに依存する場合である。
【0008】
既存のソリューションは、複雑であるか定義が不十分であり、トラックのグループからトラックを合成するための既存のメカニズムに完全には準拠していない。
【発明の概要】
【0009】
本発明は、上述の懸念の1つまたは複数に対処するために考え出された。
【0010】
この文脈において、例えばhttpプロトコルを使用してインターネットなどのIPネットワーク上でメディアコンテンツ(例えば全方向性メディアコンテンツ)をストリーミングするためのソリューションが提供される。
【0011】
本発明の第1の側面によれば、メディアデータをメディアファイルにカプセル化する方法が提供され、該方法は、
複数のメディアサンプルを含む第1のトラックを前記メディアファイルに含めることであって、各メディアサンプルは1つまたは複数のNALユニットのセットを含む、前記含めることと、
抽出器を含む第2のトラックを前記メディアファイルに含めることであって、前記抽出器は前記第1のトラックに含まれる1つのメディアサンプル内のデータエンティティを参照する構造である、前記含めることと、
前記1つのメディアサンプル内に含まれる1つまたは複数のNALユニットに対して前記参照されたデータエンティティを前記1つのメディアサンプル内で識別するコピーモード属性を前記抽出器に含めることと、
を含む。
【0012】
特に、前記コピーモード属性は、1つまたは複数のモードのリストのうちの1つに設定される。
【0013】
一実施形態では、前記モードのリストは、
前記データエンティティが前記サンプルに含まれる全てのNALユニットのセットを含む第1のモード、
前記データエンティティが前記NALユニットのセットの1つのNALユニットを含む第2のモード、
前記データエンティティが前記NALユニットのセットの1つのNALユニットのペイロードを含む第3のモード、
前記データエンティティが前記NALユニットのセット内の指定された位置にある1つのNALユニットを含む第4のモード、
前記データエンティティが前記NALユニットのセット内の指定された位置にある1つのNALユニットのペイロードを含む第5のモード、
の1つまたは複数を含む。
【0014】
一実施態様では、前記第2または前記第3のモードにおいて、前記1つのNALユニットは前記サンプル内の最初のNALユニットである。
【0015】
一実施態様では、前記第2または前記第3のモードにおいて、前記1つのNALユニットは前記サンプル内の最後のNALユニットである。
【0016】
本発明の第2の側面によれば、メディアファイルを生成する方法が提供され、該方法は、
メディアコンテンツをメディアデータに符号化することと、
上述のカプセル化する方法に従って、前記メディアデータを複数のトラックにカプセル化することと、
前記カプセル化されたメディアデータを含む少なくとも1つのメディアファイルを生成することと、
を含む。
【0017】
本発明の第3の側面によれば、メディアファイルを送信する方法が提供され、該方法は、
上述の方法に従ってサーバ機器によってメディアファイルを生成することと、
前記生成されたメディアファイルをクライアント機器に送信することと、
を含む。
【0018】
本発明の第4の側面によれば、メディアデータを生成するためにメディアファイルをパースする方法が提供され、該方法は、
抽出器を含む第1のトラックを前記メディアファイルから取得することであって、前記抽出器は第2のトラックに含まれる1つのメディアサンプル内のデータエンティティを参照する構造である、前記取得することと、
複数のメディアサンプルを含む前記第2のトラックを前記メディアファイルから取得することであって、各メディアサンプルは1つまたは複数のNALユニットのセットを含む、前記取得することと、
前記抽出器に含まれるコピーモード属性によって識別される1つのデータエンティティを前記第2のトラックの1つのメディアサンプルから取得することと、
を含み、
前記コピーモード属性は、前記1つのメディアサンプル内に含まれる1つまたは複数のNALユニットに対して前記参照されたデータエンティティを前記1つのメディアサンプル内で識別する。
【0019】
本発明の他の側面は、メディアデータをカプセル化しメディアファイルをパースするコンピュータデバイス、および対応するコンピュータプログラムに関する。
【図面の簡単な説明】
【0020】
本発明のさらなる利点は、図面および詳細な説明を検討することにより、当業者に明らかになるであろう。あらゆる追加の利点が本明細書に組み込まれることが意図されている。
【0021】
本発明の実施形態は、以下の図面を参照して、例示として以下に説明される。
【0022】
【
図1】本発明の実施形態を具現化するように適合されたカプセル化/デカプセル化モジュールを含む例示的なシステムを示す図である。
【
図2a】NAL(ネットワーク抽象層)ユニットの構造例を示す図である。
【
図2b】ISOベースメディアファイルフォーマットに基づくビデオメディアサンプルの構造例を示す図である。
【
図3】ISO/IEC14496-15に準拠した抽出器および集約器の構造例を示す図である。
【
図4a】本発明の実施形態によるカプセル化処理を示す図である。
【
図4b】本発明の実施形態によるデカプセル化処理を示す図である。
【
図5】本発明の実施形態に基づく、トラックグループからのデータ抽出を伴うメディアデータのカプセル化の例を示す図である。
【
図6】サーバからクライアントへ、独立して符号化されたビットストリームを取り込み、処理し、カプセル化し、送信し、レンダリングするシステム例を示す図である。
【
図7】2Dビデオを複数のトラックに符号化する処理を説明する図である。
【
図8】2Dの空間的な関係を記述するために、複数のトラックグループを含むサブピクチャートラックカプセル化の例を説明する図である。
【
図9a】トラックのセットまたはグループからの明示的な再構成の例を示す図である。
【
図9b】トラックのセットまたはグループからの明示的な再構成の例を示す図である。
【
図10】本発明の1つまたは複数の実施形態を実現するためのコンピュータデバイスの概略ブロック図である。
【発明を実施するための形態】
【0023】
図1は、本発明の実施形態を具現化するために適応された例示的なシステム191および195を示している。システム191は、通信ネットワーク199に接続されたカプセル化モジュール150を備える。システム195は、通信ネットワーク199に接続されたデカプセル化モジュール100を備える。
【0024】
一実施形態によれば、システム191は、コンテンツ(例えば、ビデオおよび/またはオーディオコンテンツ)を、ストリーミングまたはストレージのために処理するためのものである。システム191は、オリジナルのシーケンス画像151を含むコンテンツを取得/受信し、メディア符号化器(例えばビデオ符号化器)を用いてシーケンス画像をメディアデータ(すなわちビットストリーム)に符号化し、カプセル化モジュール150を用いてメディアデータをメディアファイル101にカプセル化する。カプセル化モジュール150は、メディアデータをカプセル化するライタまたはパッケージャの少なくとも一方を含む。メディア符号化器は、受信したコンテンツを符号化するために、カプセル化モジュール150内に実装されていてもよいし、カプセル化モジュール150とは別に設けられていてもよい。したがって、カプセル化モジュール150は、すでに符号化されたコンテンツ(メディアデータ)をカプセル化するためだけに専用化することができる。
【0025】
一実施形態によれば、システム195は、ユーザに表示/出力するためのメディアデータを処理するためのものである。システム195は、通信ネットワーク199を介してメディアファイル101を取得/受信し、デカプセル化モジュール100を用いてメディアファイル101をデカプセル化してメディアデータを取得し、メディア復号化器を用いてメディアデータをオーディオおよび/またはビデオコンテンツ(信号)に復号する。デカプセル化モジュール100は、パーサまたはプレーヤの少なくとも一方を含む。メディア復号化器は、メディアデータ(ビットストリーム)を復号化するために、デカプセル化モジュール100内に実装されていてもよいし、デカプセル化モジュール100とは別個に設けられていてもよい。
【0026】
メディアファイル101は、いくつかの方法でモジュール100のパーサまたはプレーヤに伝達されるが、例えば、カプセル化モジュール150のライタまたはパッケージャによって事前に生成され、通信ネットワーク199内の記憶装置(例えば、サーバまたはクラウドストレージ)にデータとして格納され、ユーザが記憶装置からその中に符号化されたコンテンツを要求するまでの間、格納されていてもよい。コンテンツが要求されると、データは記憶装置からデカプセル化モジュール100に通信/ストリームされる。
【0027】
また、システム191は、記憶装置に記憶されたコンテンツのコンテンツ情報(例えば、コンテンツのタイトルや、コンテンツを識別、選択、要求するための他のメタ/記憶場所データ)をユーザに提供/ストリーミングするためのコンテンツ提供装置を含んでもよい。また、コンテンツ提供装置は、記憶装置からユーザ端末に配信/ストリーミングされることになるコンテンツに対するユーザ要求を受信し、処理するように適応されてもよい。
【0028】
あるいは、カプセル化モジュール150は、メディアファイル101を生成し、ユーザがコンテンツを要求したときに、それを直接、デカプセル化モジュール100に通信/ストリーミングしてもよい。その後、デカプセル化モジュール100は、メディアファイル101を受信し、本発明の実施形態によるメディアデータのデカプセル化および復号化を実行して、ビデオ信号109および/またはオーディオ信号を取得/生成し、これをユーザ端末が使用して、要求されたコンテンツをユーザに提供する。
【0029】
ユーザは、モジュール100を構成するユーザ端末、またはモジュール100と通信する手段を有するユーザ端末のユーザインタフェースを介して、オーディオ/ビデオコンテンツ(信号)にアクセスする。このようなユーザ端末は、コンピュータ、携帯電話、タブレット、またはユーザにコンテンツを提供/表示することができる他のタイプのデバイスであってもよい。
【0030】
一実施態様によれば、メディアファイル101は、ISOベースメディアファイルフォーマット(ISOBMFF、ISO/IEC14496-12およびISO/IEC14496-15規格)に従って、メディアデータ(例えば、符号化されたオーディオまたはビデオ)をボックスにカプセル化する。メディアファイル101は、1つのメディアファイル(ファイルタイプボックス「ftyp」で示される)、または1つ以上のセグメントファイル(セグメントタイプボックス「styp」で示される)に対応することができる。ISOBMFFによると、メディアファイル101は、メディアデータを含む「メディアデータボックス(mdat)」と、メディアデータの配置やタイミングを定義するメタデータを含む「メタデータボックス」と、の2種類のボックスを含んでいてもよいとされている。
【0031】
ビデオ符号化器は、ビデオ規格を用いてビデオコンテンツを符号化し、符号化されたビデオビットストリーム(メディアデータ)を生成する。ビデオの符号化/復号化(コーデック)規格は、ITU-T H.261(ISO/IEC MPEG-1 Visual)、ITU-T H.262(ISO/IEC MPEG-2 Visual)、ITU-T H.263(ISO/IEC MPEG-4 Visual)、スケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張機能を含むITU-T H.264(ISO/IEC MPEG-4 AVC)、スケーラブル(SHVC)およびマルチビュー(MV-HEVC)拡張機能を含むITU-T H.265(HEVC)を含む。
【0032】
本明細書で説明する多くの実施形態は、HEVC規格またはその拡張機能を使用する例を説明している。しかし、本明細書で説明する技術とシステムは、AVCのような既に利用可能な他の符号化規格や、仕様策定中のITU-T H.266(VVC)のようなまだ利用可能でないまたは開発されていない符号化規格にも適用可能である。
【0033】
図2aは、H.264/AVCやHEVC/H.265などのビデオコーデックで使用されるNAL(ネットワーク抽象層)ユニット200の構造例を示している。
【0034】
NALユニットは、NALユニットヘッダ201とNALユニットペイロード202を含む。NALユニットヘッダ201は、固定長であり、NALユニットの一般的な情報を提供する。例えば、HEVCでは、NALユニットヘッダ201は、各NALユニットのタイプ、レイヤの識別子、および時間的なサブレイヤの識別子を示す。NALユニット200には、主にビデオ符号化レイヤNALユニット(VCLNAL)と非VCLNALユニットの2種類がある。VCLNALユニットは、典型的には、そのペイロードに、符号化されたスライスセグメント205を含む。非VCLNALユニットは、典型的には、パラメータセット(すなわち、構成情報)または補足的強化情報メッセージを含む。
【0035】
符号化されたスライスセグメント205は、HEVCビットストリームにおいて、slice_segment_headerまたは「スライスヘッダ」206の後にslice_segment_dataまたは「スライスデータ」207が続くように符号化される。スライスセグメントは、整数個の連続した(ラスタースキャン順の)符号化ツリーユニット(すなわちピクチャ内のブロック)を含む。スライスの形状は必ずしも矩形ではない(そのため、空間的なサブパートの表現としてはタイルよりも適切ではない)。ビデオ圧縮フォーマットは、アクセスユニットを、符号化されたピクチャに対応する、復号化順に連続したNALユニットの集合と定義している。
【0036】
図2bは、ISOベースメディアファイルフォーマットに基づくメディア(ビデオ)サンプル210の構造例を示している。
【0037】
メディアサンプルとは、1つの時間を持つオーディオ/ビデオデータユニット(例えば、オーディオフレームまたはビデオフレーム)のことである。ISO/IEC14496-15によれば、サンプルは、アクセスユニットまたはアクセスユニットの一部に対応する1つまたは複数のNALユニット212のセットである。各NALユニット212の前には、NALユニット長フィールド211がある。例えば、単一レイヤービデオの場合、サンプルは、符号化されたピクチャに対応する。レイヤードビデオの場合、サンプルはアクセスユニットの一部、例えばベースレイヤ用のNALユニットに対応し得る。
【0038】
サンプルサイズ(バイト単位)は、サンプルサイズボックス「stsz」または「stsz2」に記載されている。サンプルサイズとNALユニットの長さが与えられると、ISOBMFFパーサ(例えば、モジュール100)は、サンプル内のNALユニットの数を決定することができる。ISO/IEC14496-15では、メディアデータ(「mdat」ボックス)内に埋め込まれたISOBMFF構造体である特定のNALユニット、抽出器、および集約器を定義している。これらは、「インストリーム構造」とも呼ばれる。
【0039】
図3は、ISO/IEC14496-15に準拠した抽出器および集約器の構造の例を示す。
【0040】
メディアストリーム(例えば、圧縮されたビデオビットストリーム)に対応する第1の(メディア)トラック300は、メディア(例えば、ビデオ)サンプル301から構成され、各メディアサンプルは、
図2bに例示されるように、1つ以上のNALユニットのセットを含む。サンプル内のNALユニットの数は、1つ1つ異なっていてもよい。例えば再構成、合成、参照または抽出トラックと呼ばれる第2のトラック320は、矢印310で図示されるように、別のトラック、ここでは第1のトラック300からのデータを参照するために、NALユニット323および抽出器NALユニット322を混合するサンプル321を含む。現在のトラック320からのサンプル321は、次に、トラック300からデータを抽出し、現在のトラック320からのデータ323と連結することによって再構成され得る。
【0041】
再構成トラック320のいくつかのサンプル321は、抽出器のみまたはデータのみを含むことがあることに留意されたい。また、抽出器またはNALユニットの数は、サンプル321ごとに異なっていてもよい。抽出器322は、抽出器を含むトラック以外のトラックからNALユニットを効率的に抽出するための構造である。抽出器NALユニットは、特定のNALユニットタイプ値によって識別される(特定の値は、VLCおよび非VLCのNALユニットに割り当てられたタイプ値と衝突しないように、使用中のコーデックに依存してもよい)。
【0042】
ISO/IEC14496-15では、SVC、MVC、HEVCなどのさまざまな圧縮形式に対応する抽出器が定義されている。HEVCでは、抽出器は、参照されるトラック内のデータ(サンプル構築器)または構築器内で直接提供されるデータ(インライン構築器)からサンプルを再構築するための特定の構築器を導入する。既存の抽出器および構築器は、データの抽出またはコピーを、所定のバイト位置から何バイトかのコピーとして指定する。
【0043】
本発明は、抽出器や構築器におけるデータ抽出やコピーを、バイト範囲ではなく、むしろシンタックス構造で指定することを提案するものである。一つの利点は、シンタックス構造をコピーすることで、ビットストリームのバイトアラインメントを確保できることである。もう1つの利点は、抽出器の記述サイズを小さくできることである。抽出器はサンプルレベルで定義され、時間の経過とともに繰り返されるので、これは貴重である。もう一つの利点は、代替またはグループのトラックから抽出できることである。後者は、抽出操作をバイト範囲で表現する場合には不可能である。なぜなら、あるトラックから別のトラックへのバイト位置は、同じ構文構造に対応しない可能性があるからである。さらに別の利点は、ライタまたはパッケージャが、抽出器またはサンプル構築器のデータオフセットおよびデータ長フィールドのビット数を計算して提供するために、NALユニットのNALユニット長フィールドのバイト単位の長さを気にする必要がないことである。既存の抽出器またはサンプル構築器では、ライタまたはパッケージャが、抽出されたデータをデスティネーショントラックの長さフィールドサイズに合わせて再フォーマットする必要がある場合がある。
【0044】
図4aは、本発明の一実施形態によるカプセル化処理を示している。実施形態では、この処理は、メディアデータをカプセル化するために
図1に示されたカプセル化モジュール150のライタまたはパッケージャによって実行される。
【0045】
ステップ400では、メディアデータ(ビットストリーム)を適切に読み取ることができるように、カプセル化モジュールを初期化する。この初期化は、ユーザインタフェースを介してユーザが行うことも、アプリケーションが行うこともできる。初期化には、ビットストリームのシンタックス構造(一般性を考慮してデータエンティティと呼ばれる)の識別と、カプセル化パラメータの設定が含まれる。カプセル化の設定は、例えば、メディアファイル101を1つのメディアファイルとして生成するのかあるいは複数のメディアセグメントとして生成するのか;メディアファイルにビデオストリームの1つのトラックを含めるのかあるいは複数のトラックを含めるのか;ビデオトラックをパート、ビュー、またはレイヤに分割する設定などを決定すること、を含み得る。
【0046】
複数のトラックが含まれる場合、カプセル化モジュールは、ステップ400の間に、トラック間の参照を設定したり、トラックのグループを定義したりすることができる。したがって、1つまたは複数の他のトラックを参照して構築されたトラックは、これらの1つまたは複数のトラックへのトラック参照を含む。トラック参照は、参照するトラックと参照されるトラックとの間の関係または依存関係の種類を記述するために、異なるタイプのものであってもよい。トラック参照のタイプは、4文字のコードを使用して符号化することができる。例えば、ISO/IEC14496-15によると、タイプコード「scal」は、データが抽出される別のトラックを参照する抽出器を含むトラックを指定する。
【0047】
カプセル化モジュールが初期化されると、ステップ401でビットストリームがNALユニットごとに読み込まれる。パラメータセットに対応する最初のNALユニットは、ステップ400での初期化(インバンドパラメータセットまたはアウトオブバンドパラメータセット)に応じて、復号器構成レコード構造に埋め込まれてもよい。これらのパラメータセットは、ライタまたはパッケージャによって検査され、ビットストリーム分割についての詳細を知ることができる。例えば、時間的動き制約タイルセットのSEI(補足拡張情報)メッセージや、ピクチャパラメータセットにおけるタイルの存在を確認することで、タイリングされたHEVCビットストリームであるかどうかを判断することができる。ステップ401でNALユニットが読み込まれると、ライタはステップ402でそれが新しいサンプルに対応しているかどうかをチェックする。これは、例えば、ピクチャオーダーカウントを復号化することにより、あるいは、NALユニットに対応するスライスがピクチャの最初のスライスであるかどうかをチェックすることにより行うことができる。イエスの場合、ステップ403において、サンプル記述のパラメータ(サイズ、メディアデータ内の位置、いくつかのサンプルグループ内のプロパティ...)を設定することにより、前のサンプルが確定される。次に、ステップ404で、現在のNALユニットが、トラックのメディア部分に含まれるべきか、他のトラックから参照されるべきか、あるいは、部分的に変更されて参照されるべきかをチェックする。これは、初期化ステップ400で設定されたトラックの依存関係または関係性から判断される。NALユニットが参照されていない場合は、まずメディアデータ「mdat」ボックスにNALユニットの長さが挿入され、続いてNALユニットのヘッダとペイロードが挿入される(ステップ405)。その後、現在のサンプルのサイズが、これら3つの構造体のバイト数でインクリメントされ、ライタまたはパッケージャは、ステップ406でビデオビットストリームから次のNALユニットをチェックする。これが最後のNALユニットでない場合、すべてのNALユニットが処理されるまで、処理はステップ401に反復される。
【0048】
NALユニットが参照によりメディアファイルに含まれる場合(テスト404で真)、ライタまたはパッケージャは、ステップ407で、抽出器を含め、本発明の実施形態に従って抽出器の属性を設定する。特に、このプロセスは、「mdat」ボックス内のバイト単位の抽出器構造体のサイズを有するNALユニット長フィールドを付加し、抽出器のNALユニットを作成する。抽出器は、メディアサンプルにおいて、メディアサンプルに含まれる1つ以上のNALユニットに対して、参照されるデータエンティティを識別するコピーモード属性「copy_mode」を含む。コピーモード属性は、ライタまたはパッケージャがステップ400でどのように初期化されたかに応じて、異なる値を取る可能性がある。
【0049】
一実施形態では、ステップ400で実行された初期化の結果、再構成トラックが異なるトラックからのビデオサンプルを合成するために使用される場合、コピーモード属性が「サンプル」モードに設定される。このモードでは、データエンティティは、サンプルに含まれるすべてのNALユニットのセットを含む。
【0050】
一実施形態では、ステップ400で実行された初期化またはビットストリーム検査が、ビデオビットストリームがタイル化されており(例えば、動き制約タイルセットを有するHEVC)、ユーザまたはアプリケーションがタイルの再配置を指示したことを示している場合、コピーモード属性は「NALU」モードに設定される。このモードでは、データエンティティは、サンプルに含まれる1つの所与のNALユニットを含む。
【0051】
一実装形態では、ステップ400で実行された初期化の結果、タイル再配置がビットストリーム内のタイル位置の修正を必要とする場合、ライタは、タイル位置がスライスヘッダ内に符号化されているか、NALユニットヘッダ内に符号化されているかに応じて、コピーモード属性を「slice_data」モードまたは「NALU_payload」モードに設定したインライン構築器+抽出器を用いて、書き換え命令を提供することができる。これらのモードでは、データエンティティは、サンプルに含まれる1つの所与のNALユニットのペイロードまたはスライスデータを含む。これらのモードでは、インライン構築器の命令で上書きされてしまうような無用なデータをコピーしないで済むという利点がある。
【0052】
メディアデータパート(「mdat」ボックス)に抽出器が書き込まれると、サンプルの説明が更新される(サンプルサイズ、サンプル内の現在のNALUインデックスなど)。その後、ライタまたはパッケージャは、ステップ406で次のNALユニットをチェックする。最後のNALユニットに到達すると、ライタは、ステップ408で、例えば、最後のサンプルのサイズ、インデックステーブル、ユーザデータ、またはメディア上の任意のメタデータを書き込むことによって、メディアファイルを確定する。
【0053】
初期化ステップ400がセグメントへのカプセル化を示している場合、新しいサンプルを開始する前に、セグメント持続時間に達しているかどうかをチェックするために、追加のテストが実行される(不図示)ことに留意されたい。セグメントの持続時間に達した場合、セグメントは確定され、プレーヤによって使用されるか、または配信ネットワークを介して送信される準備が整う。セグメントの継続時間に達していない場合、ライタやパッケージャは、サンプルとNALユニットを繰り返す。
【0054】
図4bは、本発明の一実施形態によるデカプセル化処理を示す。一実施形態では、この処理は、メディアデータをデカプセル化するために、
図1に図示されたデカプセル化モジュール100のパーサまたはプレーヤによって実行される。
【0055】
ステップ410において、プレーヤはまず、メディアファイル101(1つのファイルとして、または連続したセグメントとして)を受け取る。このファイルは、パーサまたはプレーヤのメモリに格納されていてもよいし、ネットワークソケットから読み込まれてもよい。
【0056】
まず、ステップ411で初期化データ、典型的には「moov」ボックスとそのサブボックスがパースされ、メディアファイルのパラメータ/設定(トラック数、トラックの関係と依存関係、サンプルの種類、持続時間、位置とサイズなど)を知る。
【0057】
ステップ411で決定されたトラックのセットから、プレーヤまたはパーサは、ステップ412で、レンダリングする1つまたは複数のトラックを選択する。そして、メディアデータボックスをサンプルごとにパースすることで再構築を開始する。相互依存のトラックの場合、メディアデータのパースは、サンプル位置情報を用いて、参照されるトラックから参照するトラックへのトラック参照に従って行われ、例えば、サンプルテーブルボックスで利用可能なサンプルからチャンクボックス「stsc」およびチャンクオフセットボックス「stco」への参照が行われる。
【0058】
パーサやプレーヤは、ファイルの最後に到達するまで、サンプルを繰り返します(テスト413で否)。セグメントの場合、1つのセグメントが完全に読み込まれると、パーサはサンプルごとに次のセグメントを読み込んでいく。
【0059】
あるサンプルでは、チャンクオフセットボックスで指定された位置からデータを読み込み、そのチャンクでパースされた以前のサンプルの累積サイズを加える。この位置から、パーサはNALユニット長フィールドを見つける。その後、パーサはNALユニット長フィールドで指定されたバイト数を読み取り、NALユニットのペイロードを得る。NALユニットが抽出器に対応する場合(テスト415)、パーサは、ステップ416で、抽出器のコピーモード属性を読み取る。NALユニットが抽出器ではない場合、パーサは、ステップ417で、NALユニットペイロードに対応するバイトを、復号化のためにメディア復号化器に提供される再構築されたビットストリーム(メディアデータ)に付加する。ステップ417の後、処理は、現在のサンプルのサイズに達するまで、次のNALユニットを反復する(ステップ414に進む)。
【0060】
コピーモード属性の値に応じて、パーサは、参照されるトラックからサンプル、NALユニット、NALユニットペイロードまたはスライスデータを抽出する。実際、本発明の実施形態によれば、コピーモード属性は、(バイトレンジの代わりに)コピーするシンタックス構造またはデータエンティティを示す。例えば、コピーモードは、サンプルまたはアクセスユニット、NALユニット、NALユニットペイロードまたはスライスデータをコピーすることを示すことができる。
【0061】
以下では、本発明の実施形態に従って提案された新しい抽出器を説明するための例を提供する。新しい抽出器は、
図4aおよび
図4bのカプセル化/デカプセル化処理のステップ407および415で上述したように、コピーモード属性を実装する。
【0062】
コピーモード属性の実装は、SVC、MVC抽出器のような構築器を持たない抽出器と、HEVCまたはL-HEVC抽出器のような構築器を持つ抽出器の両方に適用可能である。構築器のある抽出器では、以下のように新しい種類の構築器を定義することができる(「constructor_type」で識別される)。
【0063】
class aligned(8) Extractor () {
NALUnitHeader();
do {
unsigned int(8) constructor_type;
if( constructor_type == 0 )
SampleConstructor();
else if( constructor_type == 2 )
InlineConstructor();
else if ( constructor_type == 3 )
SampleConstructorFromStructure();
} while( !EndOfNALUnit() )
}
【0064】
新しい構築器の名前「SampleConstructorFromStructure」は、例として提供されている。また、予約済みの「constructor_type」の値「3」も例として挙げられている。新しい構築器は、バイトレンジを示す(「SampleConstructor」)または提供する(「InlineConstructor」)のではなく、構文構造に依存するコピーモードを示す。「constructor_type」の予約名や予約値を使用することができる。新しい構築器は、以下のように定義される。好ましい実施形態では、新しい構築器は、参照されるトラックの時間的に並んだサンプルから抽出を行う。これにより、抽出器のNALユニットを使用して、各サンプルで”sample_offset”のための8ビットを繰り返す必要がなくなる。
【0065】
class aligned(8) SampleConstructorFromStructure () {
unsigned int(8) ref_index;
unsigned int(2) copy_mode;
if (copy_mode != 0) {
unsigned int(1) nalu_idc_field_size;
unsigned int(5) reserved;
unsigned int((nalu_idc_field_size+1)*8) nalu_idc;
} else {
unsigned int(6) reserved;
}
}
【0066】
新しい構築器のパラメータ、フィールド、属性は、以下のような意味を持つ:
-”ref_index”は、データを抽出するTrack_IDを見つけるために使用するタイプ「scal」のトラック参照のインデックスを指定する。ISOBMFFの修正により、トラック参照がトラックやトラックグループを参照することができるようになったことに注意する。ref_indexがtrack_group_idに解決された場合、パーサやプレーヤは、track grouping_typeに応じて、対応するトラックグループ内の最も適切なトラックを選択する。デフォルトの動作は、指定されたtrack_group_idを持つファイルの最初のトラックを選択することである。
-”copy_mode”は、抽出器を解決する際に実行されるコピー操作(すなわち、コピーモード)を指定する。例えば、以下の値の1つ以上が選択される。
-”0”は、「サンプル」モード、すなわち、サンプルの最初のバイトからサンプルの最後までを含めてコピーすることを示す。サンプルの最初のバイトは、Sample to Chunk BoxおよびChunk Offset Boxから決定することができます。
-”1”は、「NALU」モード、すなわちi番目のNALユニットの最初のバイトから同じNALユニットの最後のバイトまでのコピー(iはnalu_idcフィールドに対応する)を示す。NALユニットに対応するコピーするバイトの長さは、メディアデータボックス「mdat」のNALユニット212の前にある長さフィールド211から決定される。
-”2”は、「NALU_payload」モード、すなわち、i番目のNALユニットのペイロードの最初のバイトから、同じNALユニットの最後のバイトまでのコピーを示す。
-”3”は、「slice_data」モード、すなわち、i番目のslice_dataの最初のバイトからこの同じsliceの最後のバイトまでのコピー(iはnalu_idcフィールドに対応する)を示す。パーサやリーダは、例えば、スライスヘッダ長の記述専用のISOBMFF構造体を読み取ることで、コピーする最初のバイトの位置を決定する。これは、サンプルに対してスライスヘッダの長さを提供する専用のサンプルグループや、各NALユニットに対してスライスヘッダの長さを提供するインストリーム構造によって示されることがある。
-「nalu_idc_field_size」:このフィールドは、nalu_idcパラメータの符号化に使われる1バイトを引いたバイト数を示す。
-「nalu_idc」:copy_modeがNALUベースの場合(copy_mode !=0)、このフィールドは抽出元となるNALUのインデックス(1ベースのインデックス)を示す。値0は予約済みである。
【0067】
最後の2つのコピーモード(「NALU_payload」および「slice_data」モード)は、何らかのヘッダの書き換え(NALユニットヘッダまたはスライスヘッダ)が行われた場合に有効であることに留意されたい。このような場合には、ペイロードのみを抽出し、書き換えられたヘッダと結合する必要がある。ヘッダの書き換えは、インライン構築器で処理することができる。
【0068】
抽出器が集約器を参照する場合、コピーする最初のバイトのオフセットは、NALユニット長フィールド値に、NALユニット長フィールドサイズと、nalu_idc-1個のNALユニットの集約器の場合はadditional_bytesフィールドを加算して計算される。集約器はコピーモードのサンプルとしては興味があるが、NALユニットやスライスレベルで抽出する際には集約器を避けることを推奨する。copy_modeがNALユニットまたはスライスベースのコピーに設定された状態で存在する場合、集約器は無視され、nalu_idcパラメータで示されるi番目のNALユニットが処理されるものとする。
【0069】
上記全てのコピーモードにおいて、NALユニット全体をコピーする場合も、NALユニットの一部(ペイロード/スライス)をコピーする場合も、サンプルに含まれる1つ以上のNALユニットに対して、コピーされるデータエンティティは容易に決定される。
【0070】
上記の定義から、既存の”サンプル構築器”がNALユニットの長さ(復号化器構成情報の”lengthSizeMinusOne”フィールド)に応じて4~10バイト要するのに対し、新しい構築器はコピーモードに応じて2~4バイト要することがわかる。コピーモードを”sample”モードに設定すると、構築器のサイズが少なくとも2分の1になる。
【0071】
上記のコピーモードは網羅的なものではなく、より多くのバイトを節約できる他のコピーモードも想定される。例えば、ある実装方法によれば、コピーモード属性を「First_NALU」モードに設定し、パーサに現在のサンプルの最初のNALユニットをコピーするようにシグナリングすることができる。このモードでは、nalu_idcパラメータは必要ない。このモードでは、1バイトまたは2バイトのメモリを節約することができる。別の実装によれば、コピーモードはNALユニットの範囲を対象とすることができる。例えば、copy_modeを「NALU_range」モードに設定し、開始NALユニットインデックスと終了NALユニットインデックスをパラメータとして指定する。
【0072】
予約ビットを考慮すると、最大128のコピーモードが定義できる。パーサがメディアファイルのライタやパッケージャが設定したコピーモードを明確に識別するために、各コピーモードに1つの予約値を用意する。抽出に柔軟性が必要な場合、特に時間的にずれたサンプルからの抽出の場合、新しい構築器はcopy_modeパラメータまたは属性に加えてsample_offsetパラメータを埋め込むことができる。
【0073】
別の実施形態では、シンタックス構造ベースのコピーモードで動作する新しい抽出器を、既存のバイトベースの抽出器と区別するために、予約されたNALユニットタイプを持つ新しい抽出器が定義される。例えば、「StructureExtractor」と呼ばれる新しい抽出器は、以下のように定義される。
【0074】
class aligned(8) StructureExtractor () {
NALUnitHeader();
unsigned int(8) ref_index;
signed int(8) sample_offset;
unsigned int(2) copy_mode;
if (copy_mode !=0 ) { // 0: sample copy mode
unsigned int(1) nalu_idc_field_size;
unsigned int(5) reserved;
unsigned int((nalu_idc_field_size+1)*8) nalu_idc;
} else {
unsigned int(6) reserved;
}
}
【0075】
上で開示した新しい構築器と同じセマンティクスがある。主な違いは、ここでは特定の「NALUnitHeader」があることである。「NALUnitHeader」は、使用中のビデオ符号化フォーマットに対応するNALユニットヘッダであるが、使用中のビデオコーディングフォーマットのVCL、非VCLのNALユニット、または既存の抽出器や集約器に対して既に予約されていない予約値を持つ。
【0076】
別の実施形態では、新しい抽出器は、常に時間に沿ったサンプルで動作するので、「sample_offset」パラメータは、新しい抽出器構造に存在しない。2つの新しい抽出器(時間整列または非時間整列)は、(NALユニットヘッダ内の)nalu_typeの異なる特定の値によって区別することができる。
【0077】
別の実施形態では、予約されたビットの1つをサンプルオフセットの有無を示すフラグとして使用する。これにより、1つの抽出器または構築器で、時間に沿ったまたは時間に沿っていない抽出が可能になる。フラグが設定されている場合、sample_offsetが存在し、既存の抽出器または構築器と同じセマンティクスを持ち、時間に沿っていない抽出が可能になる。フラグが設定されていない場合は、sample_offsetは存在せず、時間に沿った抽出のみが可能である。以下にその例を示す。同様の実施形態は、copy_modeを提供する抽出器にも適用できる。
【0078】
class aligned(8) SampleConstructorFromTrackGroup () {
unsigned int(8) ref_index; // an identifier for a group of tracks
unsigned int(2) copy_mode; // sample, NALU, NALU payload, slice data
unsigned int(1) time_aligned_extraction;
if (time_aligned_extraction == 1) {
signed int(8) sample_offset;
}
if (copy_mode != 0) {
unsigned int(1) nalu_idc_field_size;
unsigned int(4) reserved;
unsigned int((nalu_idc_field_size + 1) * 8) nalu_idc;
} else {
unsigned int(5) reserved;
}
}
【0079】
好ましい実施形態によれば、新たに定義された抽出器または構築器は、以下に説明するように、グループ、代替物または同等物などの複数のトラックをカプセル化したメディアファイルに有利に使用することができる。
【0080】
ISOBMFFファイルは、複数のトラックをもたらす複数の符号化されたビットストリームまたはビットストリームのサブパートをカプセル化することができる。例えば、ISOBMFFファイルには複数のトラックが含まれ、それぞれが所定の品質、解像度、またはビットレートのビデオシーケンスを表し、プレーヤに選択肢を提供するために同じメディアファイルにカプセル化されている。ISOBMFFとその拡張機能は、トラック、スタティックアイテム、またはサンプルをグループ化するためのいくつかのグループ化メカニズムを備えている。グループは通常、共通のセマンティックや特性を持っている。ISOBMFFは、トラック間の関係を記述するツールも定義している。
【0081】
例えば、ISOBMFFは、エンティティグループメカニズムとトラックグループメカニズムで構成されている。エンティティグループメカニズムは、トラックおよび/またはスタティックアイテムが、示されたグループ化タイプまたはセマンティックに従ってグループ化されていることを示すために使用できる。トラックグループ化メカニズムは、トラックが指示されたグループ化タイプまたはセマンティックに従ってグループ化されることを示すために使用することができる。トラックグループについては、第1のツールとして、ISOBMFFは、トラックレベル(すなわち、ISOBMFFボックス階層の「trak」ボックス内)に位置する「trgr」と示されるボックスを提供し、各グループが特定の特性を共有する、またはグループ内のトラックが特定の関係を有するトラックのグループを記述する。トラックグループは少なくとも、識別子(”track_group_id”)とグルーピングタイプ(”track_group_type”)を含む。同じtrack_group_typeとtrack_group_idの値を持つ「TrackGroupTypeBox」を持つトラックはすべて同じトラックグループの一部である。全方向メディアアプリケーションフォーマット(OMAF、ISO/IEC23091-2)では、このタイプのトラックグループ内のトラックが、「scal」または「sabt」のトラック参照のソースとして使用される代替品であることを示すために、新しいグループタイプ「alte」を検討している。また、トラック参照タイプのセマンティクスを拡張して、「tref」ボックス内のトラックまたはトラックグループの両方を参照できるようにする。この最後の点は、メディアパーサまたはプレーヤによる抽出器の解決に影響を与える可能性がある。
【0082】
トラックのグループ、特に代替トラックのグループを定義する2つ目のツールは、トラックヘッダの「alternate_group」パラメータである。このパラメータは、トラックのグループまたはコレクションを指定する識別子を整数で指定する。「alternate_group」パラメータに同じ値を持つトラックは、お互いに代替データを含む。「alternate_group」識別子に付随して、代替トラックグループ内のトラックを区別するために、メディアファイルには、区別基準として使用できる属性(例えば、ビットレート、フレームレート、コーデック、言語、パケットサイズなど)を含めることができる。
【0083】
3つ目のツールは、エンティティ、つまりアイテムやトラック(またはその両方)をグループ化する「EntityGrouping」である。トラックグループの場合、「EntityToGroup」には、識別子と「grouping_type」が含まれる。特に、ISO/IEC14496-12では、代替を互いにグループ化するためにgrouping_type「altr」を宣言している。
【0084】
トラック間の関係を記述するもう一つのツールが、トラック参照メカニズムである。これは、トラックレベルで宣言されたトラック参照ボックス「tref」に、参照のタイプと、参照される1つ以上のトラックの識別子(track_ID)をそれぞれ提供する1つ以上のトラック参照タイプボックスが含まれている。このメカニズムは、例えば、レイヤービデオやスケーラブルビデオ(「sbas」)、タイルビデオ(「tbas」)において、トラックのセットが同じ「ベーストラック」を共有していることを示すために使用される。代替または同等のトラックは、トラックグループメカニズムを使用する代わりに、特定のトラック参照タイプでトラック参照メカニズムを介してシグナリングすることができる。例えば、「eqiv」トラック参照タイプは、参照しているトラックと参照されているトラック(複数可)が抽出のために透過的に使用できること、すなわち、それらが同じビジュアルコンテンツを表し、対応するビットストリームを組み合わせることができる(それらが同じパラメータセットを有する)ことを示す。トラックのセットが等価であることを示す他のシグナリングがあってもよい。このようなシグナリングにより、トラックのセットまたはグループを一意に識別できるようになれば、トラックグループからの新しい抽出器または構築器が使用できるようになる。
【0085】
図5は、本発明の実施形態による、トラックグループからのデータの抽出を伴うメディアデータのカプセル化の例を示す。
【0086】
抽出器トラック500(track_id=100)は、2つのトラックグループ520および530(それぞれtrack_group_id=11および22を有する)へのタイプ「scal」のトラック参照501を有する。これらの2つのトラックグループは、track_group_typeが「alte」に設定されていて、それらのトラックが互いに代替物であることを示していてもよいし、あるいは、トラックグループから1つのトラックだけを選択するための決定を常に行うことが可能なセマンティックを有する他のグループ化タイプを有していてもよい。この例では、これらのトラックグループのそれぞれが、2つの代替トラック521、522および531、532(それぞれ、track_ID=111、112のトラックおよびtrack_ID=221、222のトラック)を宣言している。例えば、トラックグループ内のトラックは、同じビデオを記述しているが、異なる品質レベルで符号化されている。この例では、抽出器トラック500の時刻502tのサンプルは、第1のトラックグループ520の1つのトラックからの時刻tのサンプルと、第2のトラックグループ530の1つのトラックからの時刻tのサンプルとの連結で構成されている。各トラックグループ520または530について、ライタ150は、サンプル502の抽出器503がトラックグループ520の内部の代替トラックのいずれか1つからサンプルを抽出してもよく、サンプル502の抽出器504がトラックグループ530の内部の代替トラックのいずれか1つからサンプルを抽出してもよいことを示している。抽出器503及び504は、そのcopy_modeが「サンプル」のコピーモードに対応する値に設定されている。
【0087】
トラックグループからのそのような抽出器の解決には、(550で表される)パーサまたはプレーヤライク100による追加のステップが必要である。ステップ415(
図4b)で抽出器NALユニットを特定する際、パーサは、ref_indexがtrack_IDに対応するか、track_group_idに対応するかをチェックしなければならない。これは、構築器またはトラックグループからの抽出器がref_indexとしてtrack_group_idのみを取る場合には、ファイルのブランドによって、抽出器または構築器のタイプによって決定することができる。トラックグループからの構築器または抽出器がtrack_IDとtrack_group_idの両方を受け入れる場合、パーサは、トラックまたはトラックグループに関連することを示すIDのリストを維持する。このリストから、パーサは、トラックグループからの抽出器または構築器のref_indexがtrack_IDまたはtrack_group_idを直接解決するかどうかを判断する。ref_indexがtrack_group_idを解決した場合、track grouping_typeに応じて、対応するトラックグループ内の最も適切なトラックを選択するかどうかは、パーサまたはプレーヤ次第である。デフォルトの動作は、指定されたtrack_group_idを持つファイルの最初のトラックを選択することである。また、トラック選択ボックスやその他のトラック説明で、代替トラックを区別するパラメータを確認し、アプリケーションやコンテキスト(帯域幅、処理能力)に応じて、トラックグループ内の最も適切なトラックを選択するという動作もある。
【0088】
復号化アーチファクトを回避するために、パーサは、ランダムアクセスサンプル(例えば、ビデオの場合はイントラフレーム)でのみ、参照トラックグループのトラックの選択を再評価してもよい。パーサは、代替トラックの「rap」サンプルグループを検査することで、ランダムアクセスサンプルの位置を決定してもよい。好ましい実施形態では、代替トラックに対応するビットストリームは、そのランダムアクセスポイントが整列しているので、パーサは、1つのトラックサンプルグループを見るだけで、抽出のためのトラック選択を再評価するタイミングを知ることができる。
【0089】
代替トラックのランダムアクセスポイントの整合性は、特定の「track_group_type」、トラック参照タイプ、またはトラックの等価性を記述する任意のシグナリングによって通知されることがある。トラックグループを参照する新しい構築器または抽出器には、トラックグループ内のトラックのランダムアクセスポイントが整列しているかどうかを示す1つのパラメータ(たとえば、予約ビットを再利用して1ビットで符号化されたフラグ)を埋め込むこともできる。整列していれば、パーサはトラックグループ内のトラックの選択を再評価できるサンプルを知ることができる。この新しいパラメータが偽に設定された場合、トラックグループ内のトラック間でランダムアクセスポイントが整列していないことを意味する。次に、トラックグループを参照している抽出器または構築器を解決するときに1つのトラックの選択を再評価する前に、パーサはまず、参照されているトラックグループ内の少なくとも1つのトラックが、現在のサンプル(抽出器を含むもの)のためのランダムアクセスポイントを有することをチェックしなければならない。
【0090】
別の実施形態では、上記のチェックを回避することができる。この代替実施形態では、トラックグループを参照する抽出器または構築器は、トラック間のランダムアクセスポイントの整列または非整列を示すフラグまたはパラメータと組み合わせたオプションのパラメータを有する。フラグが偽に設定されている場合、新しいオプションのパラメータが存在し、現在のサンプル(抽出器を含むもの)に対してランダムアクセスポイントを持つ、参照されたトラックグループ内のトラックのリストを提供する。トラックのリストは、track_IDのリストとして記述される。このリストから、パーサは、所定のサンプルについて、抽出すべきトラックグループ内の可能な候補トラックのリストを決定する。
【0091】
代替実施形態によれば、抽出器は以下のように規定される:
【0092】
class aligned(8) StructureExtractor () {
NALUnitHeader();
unsigned int(8) ref_index;
signed int(8) sample_offset;
unsigned int(1) aligned_RAPs
if (aligned_RAPs == 0) {
unsigned int (8) switchable_tracks;
}
unsigned int(2) copy_mode;
if (copy_mode !=0 ) { // 0: sample copy mode
unsigned int(1) nalu_idc_field_size;
unsigned int(4) reserved;
unsigned int((nalu_idc_field_size+1)*8) nalu_idc;
} else {
unsigned int(5) reserved;
}
}
【0093】
前述の実施形態と同様に、「StructureExtractor」には、(上記の構造のように)「sample_offset」が存在しない時間調整されたバージョンと、「sample_offset」が存在する時間調整されていないバージョンの2つがある。各バージョンには、パーサが抽出器の種類を簡単に識別できるように、特定のNALユニットタイプがある。「aligned_RAPs」(名称は一例)と呼ばれるパラメータは、(ref_indexを介して)参照されるトラックグループ内のトラックが、整列したランダムアクセスポイントを有するか否かを示すフラグに対応する。「switchable_tracks」(名称は一例)と呼ばれるパラメータは、抽出器の解決のための切り替え可能なトラックのリストを提供するパラメータである。これは、与えられたサンプルのランダムアクセスポイントを提供するトラックグループ内のトラックのインデックスを含む。ライタまたはパッケージャ150は、例えば「trgr」ボックスに記載されているトラックをグループ化する方法に関する指示のような、ステップ400で得られた初期化情報に応じて、ステップ407でこのリストを設定する。
【0094】
ここで注意したいのは、このパラメータはtrack_IDの配列にすることもできるが、説明の効率化のために、リストtrack_ID(各32ビット)の代わりに、トラックグループ内のトラックのインデックス(各8ビット)を宣言することである。これは1ベースのインデックスである。インデックスは次のように決定される(ライタ側とパーサ側の両方で):各トラックグループについて、track_IDの順序付きリストがメモリに格納される。順番はtrack_IDの値が大きい順である。例えば、track_IDが1、12、23のトラックが同じトラックグループの一部である場合、インデックス1はtrack_ID=1を、インデックス2はtrack_ID12を提供し...これは、トラックの同等性が特定のトラック参照タイプを介して通知される場合にも機能する。また、インデックスは、特定のトラック参照タイプによって参照されるtrack_IDの順序付きリストに基づいている。ランダムなアクセスポイント(イントラ復号化リフレッシュ(IDR)フレームなど)を代替トラックの異なる時間帯に配置することで、動的なコンテンツ適応のためのスイッチングポイントを増やし、スイッチングレイテンシーを削減できるシナリオがある。
【0095】
もちろん、トラックグループを参照する新しい構築器にも、同じパラメータを適用することができる(ここでは、時間に沿ったバージョンの構築器、つまりsample_offsetパラメータを含まないバージョンの構築器):
【0096】
class aligned(8) SampleConstructorFromStructure () {
unsigned int(8) ref_index;
unsigned int(2) copy_mode;
unsigned int(1) aligned_RAPs
if (aligned_RAPs == 0) {
unsigned int (8) switchable_tracks;
}
if (copy_mode != 0) {
unsigned int(1) nalu_idc_field_size;
unsigned int(4) reserved;
unsigned int((nalu_idc_field_size+1)*8) nalu_idc;
} else {
unsigned int(5) reserved;
}
}
【0097】
新しいパラメータ「aligned_RAPs」とオプションの「switchable_tracks」は、上記のStructureExtractorで使用される場合と同じ意味を持つ。上記の名前「SampleConstructorFromStructure」は例として提供されているが、「SampleConstructorFromTrackGroup」または一意で予約された単一のconstructor_typeの値に対応する任意の名前とすることもできる。
【0098】
コピーモード(汎用ケースまたはトラックグループを参照する)を有する抽出器または構築器の両方について、代替実施形態は、抽出するNALユニットのインデックスを示す別の方法を提供する(copy_modeが「サンプル」コピーモードとは異なるモードを示す場合)。この代替実施形態は、以下のような抽出器または構築器の新しい定義をもたらす。
【0099】
HEVCまたはL-HEVC抽出器について、HEVCおよびL-HEVC抽出器(または抽出器内の構築器の概念を再利用する任意の圧縮フォーマット)を拡張し、以下のようにトラックのセットまたはグループから再構築する可能性を持つ、新しいタイプの構築器(ここでは例えばSampleConstructorFromTrackGroupと呼ぶ)を提案する。
【0100】
class aligned(8) Extractor () {
NALUnitHeader();
do {
unsigned int(8) constructor_type;
if( constructor_type == 0 )
SampleConstructor();
else if( constructor_type == 2 )
InlineConstructor();
else if ( constructor_type == 3
SampleConstructorFromTrackGroup ();
} while( !EndOfNALUnit() )
}
【0101】
抽出器のconstructor_typeのセマンティクスが次のように更新されている:
「constructor_type」は、後続の構築器を指定する。SampleConstructor、InlineConstructorおよびSampleConstructorFromTrackGroupは、constructor_typeがそれぞれ0、2、および3に対応する。その他のconstructor_typeの値は予約されている。
【0102】
以下にconstructor_typeが3の場合の例を示す(ただし、使用されていない他の値も使用できる)。:
【0103】
class aligned(8) SampleConstructorFromTrackGroup () {
unsigned int(8) ref_index;
unsigned int(2) copy_mode;
unsigned int(6) reserved;
if (copy_mode != 0) {
unsigned int(8) nalu_idc; // 1-based index
if (nalu_idc == 0){
unsigned int(8) escape_nalu_idc; // To address from 255 to 511
}
}
}
【0104】
次のようなセマンティクスを持つ:
-ref_indexは、データを抽出するためのtrack_group_idを探すのに使用するタイプ「scal」のトラック参照のインデックスを指定する。track grouping_typeに応じて、対応するトラックグループの中から最も適切なトラックを選択するのは、パーサやプレイヤーの役目である。デフォルトの動作は、指定されたtrack_group_idを持つファイルの最初のトラックを選択することであり得る。
-属性”copy_mode”は、抽出器を解決する際に実行されるコピー操作を指定し、特に(どのバイト範囲をコピーするかではなく)どのシンタックス構造またはデータエンティティをコピーするかを指定する。
・copy_modeを0に設定:サンプルベースのコピーモード、すなわち、サンプルの1バイト目からサンプルの最後までのバイトをコピーする。サンプルの最初のバイトは、サンプルからチャンクボックスとチャンクオフセットボックスから判断できる。
・copy_modeを1に設定:NALユニットベースのコピーモード、すなわち、i番目のNALユニットの最初のバイトから、同じNALユニットの最後のバイトまでをコピーする。コピーする最初のバイトのオフセットは、NALユニット長フィールドの値に、NALユニット長フィールドのサイズと、nalu_idc-1個のNALユニットの集約器の場合はadditional_bytesフィールドの値を加算して計算される。NALユニットに対応するコピーするバイトの長さは、メディアデータボックス「mdat」のNALユニット212の前にある長さフィールド211から決定される。
・copy_modeを2に設定:NALUペイロードベースのコピーモード、すなわち、i番目のNALUペイロードの最初のバイトからこの同じNALUの最後のバイトまでのコピーで、iはnalu_idcフィールドに対応する。
・copy_modeを3に設定:slice_dataベースのコピーモード、すなわち、i番目のslice_dataの最初のバイトからこの同じsliceの最後のバイトまでのコピー(iはnalu_idcフィールドに対応する)を行う。パーサやリーダは、スライスヘッダの長さを記述したISOBMFF構造を読むなどして、コピーする最初のバイトの位置を決定する。
-nalu_idc属性は、copy_modeがNALユニットベースまたはslice-basedの場合(copy_mode !=0)、NALユニットのインデックス(1ベースインデックス、つまり値1から始まる)を指定する。値0は、255番目のNALUを超えて抽出するためのエスケープnalu_idcが存在することを示すために予約されている(HEVCレベル6のように、ピクチャごとに最大600個のスライスセグメントが含まれる場合などの稀なケースのため)。
-escape_nalu_idc:255番目のNALUを超えて抽出を開始するためのオフセットを示す。存在しない場合は、0とみなされる。存在する場合、値0は予約されており、512番目のNALユニットからのアドレスへの8ビットの別のエスケープ値(不図示)として必要に応じて使用できる。NALユニットはnalu_idc+escape_nalu_idcで表される。
【0105】
NALUのペイロードとスライスデータに基づくモードは、ヘッダの書き換えを行う場合に有効である。このような場合、ペイロードのみが抽出され、書き換えられたヘッダと結合される。書き換えにはインライン構築器を使用する。sample_offsetパラメータは、新しいSampleConstructorFromTrackGroupには表示されず、参照されるトラックグループ内の1つのトラックからの時間に沿ったサンプルから再構築が行われると仮定する。抽出においてより柔軟性を提供する代替の実施形態は、sample_offsetパラメータをこの新しいSampleConstructorFromTrackGroupに維持することを含む。存在する場合、sample_offsetは、ISO/IEC14496-15と同じ意味を有する。ライタまたはパッケージャ150は、特に、初期化ステップ400が、元のシーケンス151の代替的な符号化ビットストリームまたは表現が存在することを示している場合には、カプセル化ステップ407において、特定の構築器を有するこのような抽出器を使用することができる。この新しい構築器がファイル/セグメントのカプセル化手段150(例えば、mp4ライタ)とファイル/セグメントのデカプセル化手段100(例えば、mp4リーダ)との間で相互運用可能になるように、新しい抽出器を定義する新しいセクションをISO/IEC14496-15に含めることが提案されている。このSampleConstructorFromTrackGroupは、ランダムアクセスポイントがトラックグループ内のトラック全体で整列しているかどうかを示すパラメータまたはフラグのような追加のパラメータを埋め込むこともでき、このパラメータまたはフラグが偽に設定されている場合には、切り替え可能なトラックのリストを提供するオプションのパラメータを備える。
【0106】
SVC、3D-AVC、MVCの抽出器は、バイト範囲ではなく構文構造またはデータエンティティのコピーモードをサポートし、トラックグループから抽出するように拡張することもできる。特定のNALユニットタイプは、抽出器が構文構造抽出に基づいており(すなわち、copy_modeを示す属性またはパラメータを含む)、代替または同等のトラックのグループまたはセットを参照することができ、NALユニットインデックス表示のためにNALユニットエスケープモードを使用することを示すために予約される(ここでは、「sample_offset」パラメータの存在によって示されるように、時間に沿っていない抽出モードで説明する):
【0107】
class aligned(8) StructureExtractor () {
NALUnitHeader();
unsigned int(8) ref_index;
signed int(8) sample_offset;
unsigned int(2) copy_mode;
unsigned int(6) reserved;
if (copy_mode !=0 ) { // 0: sample copy mode
unsigned int(8) nalu_idc; // a 1-based index;
if (nalu_idc == 0)
unsigned int(8) escape_nalu_idc; // to address from 256 to 511
}
}
【0108】
セマンティクスは、SampleConstructorFromTrackGroupの説明と同じである。この新しい抽出器は、ランダムアクセスポイントがトラックグループ内のトラック全体で整列しているかどうかを示すパラメータまたはフラグのような追加のパラメータを埋め込むこともでき、このパラメータまたはフラグが偽に設定されている場合には、切り替え可能なトラックのリストを提供するオプションのパラメータを備える。
【0109】
図6は、カプセル化および送信方法を実施するシステム60の一例を示す。システム60は、メディアコンテンツ(例えば2D画像)をストリーミングすることができる。システム60は、サーバ機器601とクライアント機器670とを含み、メディアコンテンツは、サーバ機器601からクライアント機器670に送信される。図示するように、メディアコンテンツは、カメラシステム600によって撮影され、クライアント機器670に配信されて、例えばユーザによって2D画面675(TV、タブレット、スマートフォン、ヘッドマウントディスプレイ...)に表示されるビデオシーケンス6011とすることができる。
【0110】
ビデオシーケンスを形成する画像6011は、好ましい実施形態では、符号化手段640によって独立して符号化されるように、分割手段6012によって空間パート6013に分割される。独立して符号化されるとは、ある空間パートが、差分符号化または予測符号化のための参照として、別の空間パートからのデータを使用しないことを意味する。例えば、符号化手段640がHEVC(高効率ビデオ符号化)圧縮フォーマットに基づいている場合、空間パート6013は独立したタイルとして符号化することができる。代替的な実施形態では、空間パート6013は、動き拘束されたタイルとして符号化することができる。符号化手段は、空間パートと同数のビットストリーム、またはN個の独立したサブビットストリームを有する1つのビットストリームを提供する(例えば、独立したタイルを符号化するためにHEVCが使用される場合など)。次に、提供された各ビットストリームまたはサブビットストリームは、ファイル/セグメントカプセル化手段650(カプセル化モジュール150に対応)によって、複数のサブピクチャトラック6014にカプセル化される。サブピクチャトラックは、ピクチャまたは画像のサブ部分、典型的には空間パートまたは矩形領域のデータを埋め込むトラックである。サブピクチャトラックは、他のサブピクチャトラックや、サブピクチャが抽出されたフルピクチャを記述するトラックと関連していてもよい。
【0111】
例えば、サブピクチャトラックは、タイルトラックとすることができる。また、AVCトラック、HEVCトラック、HEVCタイルトラック、またはサンプルのシーケンスとしてカプセル化された任意の圧縮ビデオビットストリームで表現することもできる。同じビデオソースからのサブピクチャートラックは、トラックグループメカニズムを使用してグループ化することができる。例えば、OMAFでは、ビデオトラック間の2次元的な関係を表現するために、「2dcc」というtrack_group_typeを検討している。
【0112】
650で使用されるパッケージまたはカプセル化フォーマットは、例えば、MPEG標準化団体によって定義されたISOベースメディアファイルフォーマットおよびISO/IEC14496-15に従うことができる。結果として得られるファイルまたはセグメントファイルは、単一のmp4ファイルまたはmp4セグメントとすることができる。カプセル化の際には、ビデオのビットストリームにオーディオストリームを追加することができる。また、ビデオシーケンスや追加されたオーディオストリームに関する説明的な情報(メタデータ)を提供するメタデータトラックも追加される。
【0113】
カプセル化されたファイルまたはセグメントファイルは、配信手段660を介して、例えばhttp(ハイパーテキスト転送プロトコル)プロトコルを用いてインターネットのようなIPネットワーク上で、または例えばディスクやUSBキーのような取り外し可能なデジタル媒体上で、クライアント機器670に配信される。例示のために、配信手段660は、MPEG標準化委員会のDASH(HTTPを介した動的適応ストリーミング)のようなHTTP上の適応型ストリーミングを実装している(「ISO/IEC23009-1,HTTPを介した動的適応ストリーミング(DASH),Part1:メディアプレゼンテーション記述およびセグメントフォーマット”)。配信手段は、ストリーミングサーバ661とストリーミングクライアント662とで構成されていてもよい。メディアプレゼンテーション記述は、フル画像を含むビデオシーケンスをカプセル化したトラックに対応するメディアセグメントの記述とURLを提供してもよいし、サブピクチャートラックのみに対応するメディアセグメントの記述とURLを提供してもよいし、両方に対応するメディアセグメントの記述とURLを提供してもよい。メディアプレゼンテーション記述は、サブピクチャートラックの代替グループを提供してもよく、各グループは、カメラ600によって撮影されたシーンの異なる再構築レベルを可能にする。代替とは、例えば、解像度、品質またはビットレートの観点から、異なる分割(分割手段6012に関連する粗いグリッドまたは細かいグリッド)であってもよい。
【0114】
ストリーミングクライアント662による受信時に、カプセル化されたメディアファイルまたはメディアセグメントは、1つまたは複数のデータストリームを抽出するように、ファイル/セグメントデカプセル化手段671(デカプセル化モジュール100に対応)によってパースされる。抽出されたデータストリームは、復号化手段672によって復号化される。ファイル/セグメントデカプセル化手段671によって受信されたISOBMFFファイルまたはセグメントの場合、パースは通常、mp4リーダまたはmp4パーサによって処理される。パーサは、記述的なメタデータから、カプセル化されたビデオビットストリームおよび/またはビデオサブビットストリームを抽出することができる。
【0115】
次に、オプションとして、復号化手段672によって提供されたビデオシーケンスの復号化された画像またはサブ画像は、レンダリング手段674によって、ビデオレンダリングのための結果画像に合成される。レンダリングされたビデオは、スクリーン(ユーザデバイス)のような表示手段675に表示される。
【0116】
動画のレンダリングは、いくつかのパラメータに依存し、その中にはディスプレイサイズやクライアントの処理能力も含まれることに注意する。レンダリングは、パースおよび復号化されたサブピクチャートラックのサブセットのみを表示するように構成されていてもよい。これは、レンダリング手段674によって制御されてもよいし、ストリーミングクライアント662によるコンテンツ選択で直接制御されてもよい。
【0117】
VHD(超高解像度)ビデオストリームの複数の画像を伝送レンダリングすると、非常に高いビットレートと高解像度のメディアデータストリームになることが確認されています。そのため、システム全体を考慮すると、帯域幅の浪費を避け、クライアントプレーヤの処理能力に準拠するためには、メディアデータへのアクセスを最適化する必要がある。
【0118】
具体的には、メディアデータストリームは、プロジェクターのアレイのような専用のディスプレイで画像を表示するために使用することができる。また、キャプチャされたビデオ6011の中の特定の関心領域を表示するためにも使用することができる。
【0119】
図7は、2Dビデオを(手段650によって)複数のトラックにカプセル化するプロセスを示している。ステップ700で、サーバは、符号化後の入力ビットストリーム(複数可)を、単一のトラックとしてカプセル化するか、複数のトラックとしてカプセル化するかを決定する。単一トラックのカプセル化がオンである場合(テスト700が「yes」)、ビデオは単一トラックとしてカプセル化され(ステップ710)、オプションで、どのNALユニットがどの領域に対応するかを示すNALユニットマッピングを伴う。複数のトラックを生成しなければならない場合(テスト700が「no」)、例えば、
図6の手段6012によって分割が行われる場合、ステップ720において、ファイルのコンテンツ作成者は、合成トラックまたは再構成トラックを追加することができる。合成または再構成トラックは、パーサまたはプレーヤのために、エントリーポイントまたは「メイン」または「デフォルト」トラックを提供することを可能にする。例えば、合成トラックや再構成トラックには、有効であることを示すフラグの値がトラックヘッダに設定されており、ムービーで使用され、オプションでプレビューとしても使用される。合成トラックから参照されるトラックは、クライアントやプレーヤやユーザによる選択からこれらのトラックを隠すために、(track_enableフラグ値を除いて)これらのフラグ値が設定されていない場合がある。合成トラックまたは再構成トラックが存在しない場合、ステップ730において、符号化後のメディアファイルおよび各ビットストリームまたはサブビットストリームは、それ自身のトラックにカプセル化される。
【0120】
オプションのステップは、ビットストリームまたはサブビットストリームを集めて、元の分割されたものよりも大きな領域を形成することによって、トラックの数を減らすよう構成されてもよい。カプセル化が合成トラックまたは再構成トラックを提供する場合(テスト720が「yes」)、サンプル再構成規則として、メディアファイルにおける暗黙的または明示的な再構成表示という2つのオプションが可能である。
【0121】
暗黙的な再構成の場合(テスト740が「真」、分岐が「はい」)、ステップ741において、ISO/IEC14496-15で定義されているように、合成または再構成トラックがタイルベーストラック(例えば、「hvt1」サンプルエントリを有するトラック)として提供される。次に、各サブピクチャートラックは、ステップ743において、ISO/IEC14496-15で規定されているように、このタイルベーストラックに応じて、タイルトラックとしてカプセル化される。タイルトラックのための「trif」記述子に加えて、各タイルトラックは、2D空間関係記述のために同じトラックグループの一部として宣言することもできることに注意する。
【0122】
合成または再構成トラックが、明示的な再構成のための抽出器を有するトラックとして提供される場合(テスト740が「偽」、分岐が「いいえ」)、ステップ742において、追加のトラックがメディアファイルに作成される。このトラックは、主に、本発明の実施形態による抽出器を含み、すなわち、サンプル、NALユニットまたはスライスのようなシンタックス構造(データエンティティ)のコピーを可能にする。このトラックはまた、前の実施形態による新しい抽出器または構築器のような代替または同等のトラックのセットまたはグループからの抽出を可能にしてもよい。作成されたトラックは、ステップ744で作成された各サブピクチャートラックを、例えば、「scal」トラック参照タイプで参照する。合成または再構成トラックが提供されない場合(テスト720が「偽」、分岐が「いいえ」)、ステップ730において、メディアのビデオ部分がサブピクチャートラックとしてカプセル化される。なお、合成トラックまたは再構成トラックが存在する場合でも、サブピクチャートラックは、トラックグループメカニズムを介してグループ化され得る。
【0123】
最後に、ステップ750で、空間的な構成とサブピクチャートラック間の関係のための記述が生成される。元のビデオソース内の各サブピクチャートラックの相対的な位置とサイズを記述するために、2D空間関係記述用のトラックグループボックスが各サブピクチャートラックに追加される。
【0124】
図8は、2Dの空間関係を記述するために、いくつかのトラックグループを含むサブピクチャートラックのカプセル化の例を説明している。この例は、2Dビデオと全方位ビデオの両方に適用される。
【0125】
この例では、トラック#1~#4は、track_group_idが10であり、source_id800が1である、タイプ「2dcc」のトラックグループ81に属している。トラック#5~#8は、track_group_idが20であり、source_id800が1である、タイプ「2dcc」の別のトラックグループ82に属している。また、track_group_idは30であり、source_id801が2である、タイプ「2dcc」の第3のトラックグループ83が存在する。さらに、いくつかの代替グループ84~87がある。同じ代替グループに属するすべてのトラック(すなわち、トラックヘッダボックス「tkhd」内に同じalternate_group識別子を有するか、または、すべてが同じtrack_group_typeおよびtrack_group_idを有する「trgr」ボックスを宣言している)は、代替データを含むトラックのグループまたはコレクションを指定する。代替データには、代替のビットレート、コーデック、言語、パケットサイズなどがある。これらの差別化された属性は、トラック選択ボックスに表示することができる。代替グループ内のトラックは、一度に1つだけ再生またはストリーミングする必要がある。この例では、トラック#1、#5、#9は、識別子が100である同じ代替グループ84に属している。例えば、トラック#1とトラック#5は、異なる品質を持つ代替トラックであり、トラック#9は、コーデックの観点からトラック#1とトラック#5の代替トラックである。トラック#2、#6、#10は、識別子が200である同一の代替グループ85に属しており、例えば、トラック#2とトラック#6は、解像度の異なる代替トラックであり、トラック#10は、フレームレートの観点からトラック#2とトラック#6の代替トラックである、等々である。
【0126】
トラックグループ81と82は同じsource_id800を持ち、トラックグループ83は異なるsource_id801を持つことは、トラックグループ81と82に属するサブピクチャートラックを(他の制約条件に関して、つまり代替グループごとにほぼ1つのサブピクチャートラックを)組み合わせることができることを意味する。逆に、トラックグループ83のサブピクチャートラックは、同じ代替グループに属していても、同じsource_idを持たないため、トラックグループ81および82のサブピクチャートラックと組み合わせることはできない。source_idパラメータは、同じ空間構成の一部となり得るサブピクチャートラックのプレーヤへの指示となる。与えられた空間的位置に対して、あるサブピクチャートラックは、同じ与えられた空間的位置にある別のサブピクチャートラックと視覚的に等価であると考えることができる。これは、メディアコンテンツが複数のトラックに分けて提供されている場合に、(サブピクチャ)トラックの選択に役立つ。さらに、選択されたサブピクチャートラックに応じて、同じ空間構成を表示するために、(品質/ビットレートや解像度を)動的に適合させることができる。
図8の構成により、650(
図6)または150(
図1)のライタまたはパッケージャが、異なるトラックの空間的な部分を、レンダリングするためのより大きな画像にアレンジするための再構成または構成トラックを構築することができる。本発明の実施形態によれば、再構築または合成トラックは、異なるコピーモードを有する提案された抽出器を使用し、トラックグループを参照することができる。これは、例えば、トラック#1またはトラック#5に対応する空間パートが、これらの2つのトラックのいずれかによって再構成される可能性があることを示すのに有用である。これは、100(84)に等しい代替グループを参照する抽出器を有するライタまたはパッケージャによって示される。同様に、第2の空間パートのデータは、代替グループ85の1つのトラックから抽出することができる。この場合も、再構成トラックは、copy_modeが「sample」モードに設定され、トラックグループを参照する抽出器を含む。
【0127】
図9aおよび
図9bは、トラックのセットまたはグループからの明示的な再構成の例を示す。図示の例では、トラックのグループは、サブピクチャートラックの代替セットに対応する。
【0128】
本発明の実施形態によれば、新しい種類の抽出器は、
図9aの900または
図9bの950のような抽出器または再構成トラックで使用される。
図9aおよび
図9bには、「代替による明示的な空間再構成」を示すために、特定のトラック参照タイプ「esra」901または951が示されている。代わりにタイプ「scal」のトラック参照を使用してもよい。ステップ「トラック選択」902または952は、901または951によるトラックグループによって参照されるトラックグループ内のトラックを選択するためにパーサによって行われるステップに対応する。
図9aは、
図8上の構成と非常に類似しており、すなわち、代替トラックは、タイプ「alte」のトラックグループ(903および904)によって示されるが、
図9bは、例えばサブセット(953および954)を使用するなど、代替トラックを記述する代替方法を考慮している。サブセットは、特定の代替を有するサンプル構築器(ID#100のトラック950)においてref_indexとしても使用され得る一意の識別子によって識別される。サブセットの識別子は、「2dsr」ボックスのパラメータとして宣言できる。subset_identifierの使用には、サブピクチャートラックごとに4バイトのコストがかかり、「alte」トラックの宣言にはサブピクチャートラックごとに24バイトのコストがかかる。
【0129】
図10は、本発明の1つまたは複数の実施形態を実施するためのコンピュータデバイス1000の概略ブロック図である。コンピュータデバイス1000は、マイクロコンピュータ、ワークステーション、または軽いポータブルデバイスなどのデバイスであってもよい。コンピュータデバイス1000は、
-マイクロプロセッサのような中央処理装置(CPU)1001;
-マニフェストの読み書きおよび/またはビデオの符号化および/または所定のファイルフォーマットの下でのデータの読み書きに必要な変数およびパラメータを記録するために適合されたレジスタと同様の、本発明の実施形態に係る方法の実行コードを格納するランダムアクセスメモリ(RAM)1002であって、そのメモリ容量は、例えば、拡張ポートに接続されたオプションのRAMによって拡張可能である;
-本発明の実施形態を実現するためのコンピュータプログラムを格納するROM(読み取り専用メモリ)1003;
-典型的には、処理されるべきデジタルデータが送受信される通信ネットワークに接続されるネットワークインタフェース1004。ネットワークインタフェース1004は、単一のネットワークインタフェースであってもよいし、異なるネットワークインタフェースのセット(例えば、有線および無線のインタフェース、または、異なる種類の有線または無線のインタフェース)で構成されていてもよい。データは、CPU1001で動作するソフトウェアアプリケーションの制御下で、送信のためにネットワークインタフェースに書き込まれたり、受信のためにネットワークインタフェースから読み込まれたりする;
-ユーザからの入力を受け付けたり、ユーザに情報を表示したりするためのユーザインタフェース(UI)1005;
-ハードディスク(HD)1006;
-ビデオソースやディスプレイなどの外部機器との間でデータを送受信するためのI/Oモジュール1007
に接続された通信バスを備える。
【0130】
実行コードは、読み取り専用メモリ1003、ハードディスク1006、または例えばディスクなどのリムーバブルなデジタル媒体のいずれかに格納され得る。変形例によれば、プログラムの実行可能コードは、実行される前に、ハードディスク1006などの通信装置1000の記憶手段の1つに記憶されるために、ネットワークインタフェース1004を介して、通信ネットワークによって受信することができる。
【0131】
中央処理装置1001は、本発明の実施形態によるプログラムまたはプログラムの命令またはソフトウェアコードの一部の実行を制御および指示するように適合されており、これらの命令は前述の記憶手段の1つに格納される。電源投入後、CPU1001は、ソフトウェアアプリケーションに関するメインRAMメモリ1002からの命令を、それらの命令が例えばプログラムROM1003またはハードディスク(HD)1006からロードされた後に実行することができる。このようなソフトウェアアプリケーションは、CPU1001によって実行されると、これまでの図に示したフローチャートのステップを実行させる。
【0132】
本実施形態では、本装置は、ソフトウェアを使用して本発明を実施するプログラム可能な装置である。しかし、代わりに、本発明をハードウェア(例えば、特定用途向け集積回路(ASIC)の形態)で実施してもよい。
【0133】
本明細書では、特定の実施形態を参照して本発明を説明してきたが、本発明は特定の実施形態に限定されるものではなく、本発明の範囲内にある変更が当業者には明らかになるであろう。
【0134】
例えば、本発明は、カメラ、スマートフォン、ヘッドマウントディスプレイ、タブレットのように、テレビやマルチメディアディスプレイのリモコンとして機能するデバイスに組み込まれ、例えば、特定の関心領域にズームインすることができる。また、同じデバイスを使って、特定の関心領域を選択することで、マルチメディアプレゼンテーションの閲覧をカスタマイズすることもできる。また、これらの機器や方法を使って、ユーザが好みのビデオの一部を選択して他の接続された機器と共有することもできる。また、監視カメラが本発明によるデータ提供方法に対応していれば、スマートフォンやタブレットを使って、監視下に置かれた建物の特定のエリアで起こっていることを監視することもできる。
【0135】
本発明の範囲を限定するものではなく、添付の特許請求の範囲によってのみ決定されるものである。特に、異なる実施形態からの異なる特徴は、適切な場合には、交換することができる。