(57)【特許請求の範囲】
【請求項１】
複数のトラックおよび／またはトラックサブセットにおけるマルチビューマルチメディアデータを処理する方法であって、
前記マルチビューマルチメディアデータを、前記複数のトラックおよび／またはトラックサブセットに格納することと；
１つ以上のマルチトラックグループを特定すること、ただし、各マルチトラックグループは、前記複数のトラックおよび／またはトラックサブセットのうちの１つ以上の間の関係性を含むグループ化基準に基づいて特定され、前記トラックまたはトラックサブセットは前記１つ以上のマルチトラックグループを用いて特定されうる、前記特定することと；
マルチトラックグループのセットを少なくとも１つ形成すること、ただし、前記マルチビューマルチメディアデータに対して規定されるマルチトラックグループの特性の１つ以上を含み、かつ、前記マルチトラックグループ間の関係の少なくとも１つを標示するグループ化基準に基づいている、前記形成することと；
を含む方法。
【請求項２】
２つ以上のマルチトラックグループ間の少なくとも１つの関係を特定することをさらに含む、請求項１に記載の方法。
【請求項３】
前記、１つ以上のマルチトラックグループを特定することは、
少なくとも１つのトラックサブセットに基づきマルチトラックグループを特定することと；
シーンの別々のビューを表現するマルチメディアデータに対応する複数のトラックおよび／またはトラックサブセットをグループ化することと；
トラックおよび／またはトラックサブセット間の関係を示すために、マルチトラックグループボックスを使用することと；
のうちの少なくとも１つを含む、請求項１または２に記載の方法。
【請求項４】
マルチトラックグループのセットを少なくとも１つ形成すること、ただし、マルチトラックグループの前記セットは、前記マルチトラックグループの特性の１つ以上に関連する、前記形成することをさらに含む、請求項１から３のいずれかに記載の方法。
【請求項５】
前記、マルチトラックグループのセットを少なくとも１つ形成することは：
マルチビューメディアレンダリング、符号化、またはキャプチャリングの観点から類似する特性に少なくとも部分的に基づいて、前記マルチトラックグループのセットを少なくとも１つ形成することと；
マルチトラックグループ間の関係を示すために、マルチトラックグループ関係ボックスを使用して、前記マルチトラックグループのセットを少なくとも１つ形成することと；
を含む、請求項４に記載の方法。
【請求項６】
前記、マルチトラックグループ間の関係を示すために、マルチトラックグループ関係ボックスを使用することは、１つ以上の基準を使用することを含む、請求項５に記載の方法。
【請求項７】
前記１つの基準は、前記マルチトラックグループのうちの１つのみが一度に処理されるということを示す、請求項６に記載の方法。
【請求項８】
コンピュータのプロセッサにより実行されると、前記コンピュータに、請求項１から７のいずれかに記載の方法を実行させるコンピュータ実行可能命令を含む、コンピュータプログラム。
【請求項９】
複数のトラックおよび／またはトラックサブセットにおけるマルチビューマルチメディアデータを処理する装置であって、
前記装置は、前記マルチビューマルチメディアデータを格納すると共にコンピュータプログラムコードを有するメモリと、プロセッサとを備え、前記コンピュータプログラムコードは、前記プロセッサと協働して、前記装置に少なくとも以下のこと：
前記マルチビューマルチメディアデータを、複数のトラックおよび／またはトラックサブセットに格納することと；
１つ以上のマルチトラックグループを特定すること、ただし、各マルチトラックグループは、前記複数のトラックおよび／またはトラックサブセットのうちの１つ以上の間の関係性を含むグループ化基準に基づいて特定され、前記トラックまたはトラックサブセットは前記１つ以上のマルチトラックグループを用いて特定されうる、前記特定することと；
マルチトラックグループのセットを少なくとも１つ形成すること、ただし、前記マルチビューマルチメディアデータに対して規定されるマルチトラックグループの特性の１つ以上を含み、かつ、前記マルチトラックグループ間の関係の少なくとも１つを標示するグループ化基準に基づいている、前記形成することと；
を実行させるよう構成される、装置。
【請求項１０】
前記コンピュータプログラムコードは、前記プロセッサと協働して、前記装置にさらに、
２つ以上のマルチトラックグループ間の少なくとも１つの関係を特定することを行わせるよう構成される、請求項９に記載の装置。
【請求項１１】
前記コンピュータプログラムコードは、前記プロセッサと協働して、前記装置にさらに、前記、１つ以上のマルチトラックグループを特定する中で、少なくとも以下のこと：
少なくとも１つのトラックサブセットに基づきマルチトラックグループを特定すること；
シーンの別々のビューを表現するマルチメディアデータに対応する複数のトラックおよび／またはトラックサブセットをグループ化すること；
トラックおよび／またはトラックサブセット間の関係を示すために、マルチトラックグループボックスを使用すること；
を行わせるよう構成される、請求項９または１０に記載の装置。
【請求項１２】
前記コンピュータプログラムコードは、前記プロセッサと協働して、前記装置にさらに、
マルチトラックグループのセットを少なくとも１つ形成すること、ただし、マルチトラックグループの前記セットは、前記マルチトラックグループの特性１つ以上に関連する、前記形成すること；
を行わせるよう構成される、請求項９から１１のいずれかに記載の装置。
【請求項１３】
前記、マルチトラックグループのセットを少なくとも１つ形成することは：
マルチビューメディアレンダリング、符号化、またはキャプチャリングの観点から類似する特性に少なくとも部分的に基づいて、前記マルチトラックグループのセットを少なくとも１つ形成することと；
マルチトラックグループ間の関係を示すために、マルチトラックグループ関係ボックスを使用して、前記マルチトラックグループのセットを少なくとも１つ形成することと；
を含む、請求項１２に記載の装置。
【請求項１４】
前記、マルチトラックグループ間の関係を示すために、前記マルチトラックグループのセットを少なくとも１つ形成することは、１つ以上の基準を使用することを含む、請求項１３に記載の装置。
【請求項１５】
前記１つの基準は、前記マルチトラックグループのうちの１つのみが一度に処理されるということを示す、請求項１４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、リアルタイムマルチメディアデータの分野に関し、特に、そのようなマルチメディアデータの編成に関する。
【発明の背景】
【０００２】
本項は、特許請求の範囲に記載の本発明の背景または発明が為されるに至った事情を説明することを目的としている。本項の記載は、追求されうる概念を含むこともあり、それは必ずしも以前に着想または追求されたものとは限らない。したがって、本項に別途指示がない限り、本項に記載される事項は、本出願の記載および特許請求の範囲に対する従来技術と認めてはならず、本項に含まれるということだけで従来技術であると認められるものではない。
【０００３】
ISOベースメディアファイルフォーマット、およびその修正、例えばSVC(scalable video coding:スケーラブルビデオ符号化)ファイルフォーマットなどは、階層的に編成されたビットストリームサブセットの特性を示すことをサポートする。例えば、スケーラブルビデオ符号化(SVC)ビットストリームのサブセットの特性は、層（tier）(本質的にスケーラブルレイヤに類似)またはトラック全体(スケーラブルレイヤに対応)に対して示されることがある。しかし、ISOベースメディアファイルフォーマットは、種々の階層パーティショニングおよびオーバーラップするビットストリームサブセット(タマネギ状構造を有しない)の標示をサポートしていない。マルチビュービデオ符号化(MVC：Multiview video coding)は、出力用のビューの選択に柔軟性があるため、両タイプの標示を必要とする。
【０００４】
各トラックが、トラック参照により相互に関連付けられ、トラックまたはトラックサブセットの特性(例えばSVCの層)が示されることは可能だが、ISOベースメディアファイルフォーマットにもそれから派生したものにも、トラックまたはトラックサブセットのグループの特性を示すメカニズムはない。この特性とは、例えば、必要なプロファイル、レベル、復号器バッファリングパラメータなどである。
【０００５】
ISOベースメディアファイルフォーマットは、トラックまたはトラックサブセットのグループの、トラックまたはトラックサブセットの別のグループとの関係(共通要素および相違する要素)を示すメカニズムを欠く。
【発明の概要】
【０００６】
本発明の一側面において、リアルタイムマルチメディアデータを、複数のトラックおよび/またはトラックサブセットに格納することと、1つ以上のマルチトラックグループ(multi-track group)を特定すること、ただし、各マルチトラックグループは、前記複数のトラックおよび/またはトラックサブセットのうちの1つ以上の間の関係性を伴う、前記特定することとを含む方法を提供する。
【０００７】
一実施形態では、本方法は、複数マルチトラックグループの2つ以上のセット間の少なくとも1つの関係を特定することをさらに含む。
【０００８】
一実施形態では、1つ以上のマルチトラックグループを特定することは、少なくとも1つのトラックサブセットに基づきマルチトラックグループを特定することを含む。
【０００９】
一実施形態では、1つ以上のマルチトラックグループを特定することは、同じコンテンツの複数ビューをグループ化することを含む。
【００１０】
一実施形態では、1つ以上のマルチトラックグループを特定することは、トラックおよび/またはトラックサブセット間の関係を示すためにマルチトラックグループボックスを使用することを含む。
【００１１】
一実施形態では、本方法は、マルチトラックグループのセットを少なくとも1つ形成すること、ただし、マルチトラックグループのセットは、マルチトラックグループの特性1つ以上に関連する、前記形成することをさらに含む。
【００１２】
一実施形態では、マルチトラックグループのセットを少なくとも1つ形成することは、マルチビューメディアレンダリング、符号化、またはキャプチャリングの観点から類似する特性に基づく。
【００１３】
一実施形態では、マルチトラックグループのセットを少なくとも1つ形成することは、マルチトラックグループ間の関係を示すために、マルチトラックグループ関係ボックスを使用することを含む。マルチトラックグループ間の関係を示すために、1つ以上の基準が使用されてもよい。1つの基準は、示されるマルチトラックグループのうちの1つのみが一度に処理されるべきであるということを示してもよい。
【００１４】
本発明の別の側面では、コンピュータプログラムがコンピュータ可読媒体上に具現化される。このコンピュータプログラムは、リアルタイムマルチメディアデータを複数のトラックおよび/またはトラックサブセットに格納することと、1つ以上のマルチトラックグループを特定すること、ただし、各マルチトラックグループは、前記複数のトラックおよび/またはトラックサブセットのうちの1つ以上の間の関係性を伴う、前記特定することとを含む方法を提供するよう構成されている。
【００１５】
別の側面では、本発明は、リアルタイムマルチメディアデータを格納するストレージユニットと、プロセッサとを含む装置を含む。プロセッサは、リアルタイムマルチメディアデータを、複数のトラックおよび/またはトラックサブセットに格納すること、および1つ以上のマルチトラックグループを特定すること、ただし、各マルチトラックグループは、前記複数のトラックおよび/またはトラックサブセットのうちの1つ以上の間の関係性を伴う、前記特定することを行うよう構成されている。
【００１６】
以下の詳細な説明を添付の図面と併せて理解することで、本発明の様々な実施形態のこれらの利点および機能、ならびに他の利点および機能が、その実装および使用方法とともに明らかとなる。
【００１７】
本発明の例示実施形態について、添付の図面を参照することにより説明する。
【図面の簡単な説明】
【００１８】
【図１】マルチメディアファイルフォーマットの階層を示す。
【図２】ISOベースメディアファイルフォーマットに従った例示のボックスを示す。
【図３Ａ】サンプルグループ化を示す例示のボックスである。
【図３Ｂ】SampleToGroupボックスを含むムービーフラグメントを含んだ例示のボックスを示す。
【図４】例示のMVC復号順序を示す。
【図５】マルチビュービデオ符号化の例示のMVC予測構造を示す。
【図６】例示のオーディオ/ビデオレートシェアプロファイル(audio/video rate share profile)を時間の関数として示す。
【図７】例示のオーディオレートシェアプロファイルを使用可能ビットレートの関数として示す。
【図８】マルチメディアデータ編成の概略を示す図である。
【図９】本発明の実施形態に従ったマルチメディアデータ編成の概略を示す図である。
【図１０】本発明の実施形態に従ったプロセスを示すフローチャートである。
【図１１】本発明の実施形態に従った、1つの切り替え関係が間にある2つのマルチトラックグループの例示ファイルを示す。
【図１２】本発明の実施形態に従った、3つのビューを備えるビデオストリームの例示フォーマット構造を示す。
【図１３】本発明の実施形態に従った、各ビューがトラックとして格納されている例示ファイルを示す。
【図１４】本発明の実施形態に従った、すべてのビューが1つのトラックとして格納されている例示ファイルを示す。
【図１５】本発明の実施形態に従った、各トラックが異なる数のビューを有する例示ファイルを示す。
【図１６】本発明の実施形態に従った、ビュー階層のいくつかの異なる分岐に関連するSEI(:Supplemental Enhancement Information:付加拡張情報)メッセージを含む例示のマルチビュービットストリームを示す。
【図１７】本発明の様々な実施形態が実装され得るシステムの概要図である。
【図１８】本発明の様々な実施形態に従い利用されうる例示電子デバイスの斜視図を示す。
【図１９】図18の電子デバイスに含まれうる回路の概略図である。
【図２０】様々な実施形態が実装され得る汎用マルチメディア通信システムの図表現である。
【様々な実施形態の詳細な説明】
【００１９】
以下では、本発明の完全な理解を得られるよう、限定ではなく説明のために詳細事項および説明が記載される。なお、当業者には当然のことながら、本発明は、こうした詳細事項および説明から離れた他の実施形態において実践されてもよい。
【００２０】
マルチメディアコンテナファイルフォーマットは、一連のマルチメディアコンテンツ生成、操作、伝送および消費において重要な要素である。符号化フォーマット(別称エレメンタリストリームフォーマット)と、コンテナファイルフォーマットとの間には大きな違いがある。符号化フォーマットは、コンテンツ情報をビットストリームに符号化する特定の符号化アルゴリズムの動作に関する。コンテナファイルフォーマットは、生成されたビットストリームを編成する手段を含むものであり、この手段とは、ビットストリームについて、ローカルでの復号や再生のためのアクセス、ファイルとしての転送、ストリーミングなどのすべてを、様々なストレージおよびトランスポートアーキテクチャを利用して行うことができるように、ビットストリームを編成するものである。さらに、このファイルフォーマットは、メディアの交換や編集、ならびに受信されたリアルタイムストリームのファイルへの記録のためにも働く。マルチメディアファイルフォーマット200の階層が、図1に示されている。
【００２１】
使用可能なメディアファイルフォーマット標準には、ISOベースメディアファイルフォーマット(ISO/IEC14496-12)、MPEG-4ファイルフォーマット(ISO/IEC14496-14、別称MP4フォーマット)、AVCファイルフォーマット(ISO/IEC14496-15)、および3GPPファイルフォーマット(3GPP TS26.244、別称3GPフォーマット)が含まれる。AVCファイルフォーマットに対する最近の修正により、スケーラブルビデオ符号化(SVC)のファイルフォーマットが規定された。MPEG(Moving Picture Experts Group)では、AVCファイルフォーマットの修正としてのマルチビュービデオ符号化(MVC)のファイルフォーマットを規定する作業を進めている。MPEGはさらに、FLUTE(IETF RFC3926)およびALC(IETF RFC 3450)セッションのヒントトラックフォーマットを規定済みであり、これは、ISOベースメディアファイルフォーマットの2005年バージョンの修正2の一部となった。ISOベースメディアファイルフォーマットの2005年バージョンのすべての修正および正誤表をISOベースメディアファイルフォーマットの2005年バージョンに含めたものが、ISOベースメディアファイルフォーマットの新版(第3版)として最近刊行されており、これを、ISOベースメディアファイルフォーマットの2008年バージョン、またはISOベースメディアファイルフォーマットの第3版と呼ぶ。
【００２２】
ISOベースメディアファイルフォーマットから派生したもう1つのフォーマットが、最近DVB(digital video broadcasting:デジタルビデオブロードキャスティング)Bluebook A121として刊行されたDVBファイルフォーマットである。DVBファイルフォーマットを定義する主要目的は、現在の(DVB-T、DVB-C、DVB-S)および将来のDVB標準によるセットトップボックス、IP(Internet Protocol:インターネットプロトコル)テレビ受像機、ならびにDVB-Hおよびその将来の展開によるモバイルテレビ受信機などのDVB技術の実装間のコンテンツ相互運用を容易にすることである。DVBファイルフォーマットは、すべてのDVBコンテンツを端末側で格納することができる。DVBファイルフォーマットは、準拠したDVBデバイス間の相互運用性を確保する交換フォーマットとして意図されている。必ずしも、DVB準拠のデバイスの内部格納フォーマットとして意図されてはいない。このファイルフォーマットは、他のDVBブロードキャスト規格により使用される任意のタイプのメディアおよびデータを処理できなくてはならない。DVBファイルフォーマットは、異なる製造者のデバイス間で、記録されたメディアを交換すること、USB大容量メモリまたは同様の読み書きデバイスを使用してコンテンツを交換すること、およびホームネットワーク上で共通のディスクストレージに共用アクセスすること、ならびにその他多数の機能性を可能にする。
【００２３】
ISOファイルフォーマットが、上述のファイルフォーマットすべて(ISOファイルフォーマット自体を除いて)の派生の基礎である。こうしたファイルフォーマット(ISOファイルフォーマット自体を含む)は、ISOファイルフォーマット群と呼ばれる。
【００２４】
図2は、ISOベースメディアファイルフォーマットによる、簡略化したファイル構造220を示す。ISOベースメディアファイルフォーマットにおける基本構成ブロックは、ボックスと呼ばれる。各ボックスは、ヘッダおよびペイロードを有する。ボックスヘッダは、ボックスのタイプと、バイト単位でのボックスのサイズとを示す。ボックスが他のボックスを包含することもあり、ISOファイルフォーマットは、特定タイプのボックス内にどのボックスタイプが許可されるかを規定している。さらに、一部のボックスは強制的に各ファイル内に存在する一方、他のボックスはオプションである。さらに、一部のボックスタイプに関しては、ファイル内に2つ以上のボックスが存在することが許可される。ISOベースメディアファイルフォーマットは、ボックスの階層構造を規定するものであると結論付けることもできる。
【００２５】
ISOファイルフォーマット群によれば、ファイルは、メディアデータおよびメタデータから成り、これらはそれぞれメディアデータ(mdat)ボックスおよびムービー(moov)ボックスという別々のボックスに包含されている。ファイルが動作可能となるには、このボックス両方が存在しなければならない。ムービーボックスは、1つ以上のトラックを含むとよく、各トラックは1つのトラックボックスに属する。トラックは、メディア、ヒント、タイムドメタデータ(timed metadata)という複数のタイプのうちの1つであってもよい。メディアトラックは、メディア圧縮フォーマットに従いフォーマットされたサンプル(およびISOベースメディアファイルフォーマットへのそのカプセル化)を指す。ヒントトラックは、示される通信プロトコルによる伝送用にパケットを構築するための詳細命令を含む、ヒントサンプルを指す。この詳細命令は、パケットヘッダ構築およびパケットペイロード構築のガイダンスを含むこともある。パケットペイロード構築では、他のトラックまたはアイテムに属するデータが参照されることもある。すなわち、参照によって、特定トラックまたはアイテム内のデータのどの部分がパケット構築プロセス中にパケットにコピーされるよう指示されるかが示される。タイムドメタデータトラックは、参照されるメディアおよび/またはヒントサンプルを記述するサンプルを指す。典型的には、1つのメディアタイプのプレゼンテーションに、1つのメディアトラックが選択される。トラックのサンプルは、サンプル番号に暗に関連付けられており、サンプル番号は、示されるサンプルの復号順序により1ずつインクリメントされる。
【００２６】
なお、ISOベースメディアファイルフォーマットは、プレゼンテーションが1つのファイルに含まれるよう限定せず、プレゼンテーションはいくつかのファイルに含まれていてもよい。1つのファイルが、プレゼンテーション全体のメタデータを含む。このファイルがさらに、すべてのメディアデータを含んでもよく、その場合、プレゼンテーションは自己完結型である。他のファイルが使用される場合、それがISOベースメディアファイルフォーマットにフォーマットされることは要求されず、そのファイルは、メディアデータを含むよう使用され、さらに未使用メディアデータまたは他の情報を含んでもよい。ISOベースメディアファイルフォーマットは、プレゼンテーションファイルの構造のみに関係する。メディアデータファイルのフォーマットは、メディアファイル内のメディアデータが、ISOベースメディアファイルフォーマットまたはそれから派生したフォーマットにおいて規定されているようにフォーマットされなければならないという点においてのみ、ISOベースメディアファイルフォーマットまたはそれから派生したフォーマットに制約される。
【００２７】
ムービーフラグメントは、レコーディングアプリケーションがクラッシュした場合、ディスクが足りなくなった場合、またはその他何らかの問題が起こった場合にデータの損失を回避するために、ISOファイルにコンテンツを記録するときに使用される。ムービーフラグメントがなければ、すべてのメタデータ(ムービーボックス)がファイルの連続する一領域に書き込まれるようファイルフォーマットが要求することから、データ損失が生じることもある。さらに、ファイルを記録するとき、使用可能なストレージのサイズに対し、ムービーボックスをバッファリングする十分な量のランダムアクセスメモリ(RAM:Random Access Memory)がないこともあり、ムービーが閉じられるときにムービーボックスのコンテンツを再計算するのでは遅すぎる。加えて、ムービーフラグメントは、通常のISOファイルパーサを使用した、ファイルの同時記録・再生を可能にしてもよい。最終的に、ムービーフラグメントが使用され、同じメディアコンテンツを備えるがムービーフラグメントなしの構造のファイルに比べ初期のムービーボックスが小さければ、プログレッシブダウンロード、すなわちファイルの同時受信・再生に必要な初期バッファリング期間が短縮される。
【００２８】
ムービーフラグメントの機能は、従来moovボックスに属していたメタデータを、トラックの特定時間にそれぞれ対応する複数部分に分けることを可能にする。換言すれば、ムービーフラグメントの機能は、ファイルメタデータおよびメディアデータをインターリーブすることを可能にする。その結果として、moovボックスのサイズを制限でき、上述の使用事例が実現される。
【００２９】
従来通り、ムービーフラグメントのメディアサンプルは、それがmoovボックスと同じファイルにある場合はmdatボックスに属する。なお、ムービーフラグメントのメタデータには、moofボックスが提供される。moofボックスは、以前はmoovボックスにあったと考えられる再生時刻の特定期間に関する情報を含む。moovボックスは依然としてそれ自体で有効なムービーを表すが、それに加えて、同じファイル内にムービーフラグメントが続くことを示すmvexボックスを含む。ムービーフラグメントは、moovボックスに関連するプレゼンテーションを時間延長する。
【００３０】
moofボックスに含まれ得るメタデータは、moovボックスに含まれ得るメタデータのサブセットに限られ、場合によっては違う形で符号化される。moofボックスに含まれ得るボックスの詳細は、ISOベースメディアファイルフォーマット規格から確認できる。
【００３１】
以下、図3Aおよび3Bを参照する。ボックスにおけるサンプルグループ化の利用法が示されている。ISOベースメディアファイルフォーマット、ならびにそれから派生したもの、例えばAVCファイルフォーマットおよびSVCファイルフォーマットなどにおけるサンプルグループ化は、グループ化基準に基づき、トラック内の各サンプルを、1つのサンプルグループの要素とする割り当てである。サンプルグループ化におけるサンプルグループは、連続的なサンプルであるよう限定されず、隣接しないサンプルを含んでもよい。トラック内のサンプルに関して、2つ以上のサンプルグループ化があってもよいため、各サンプルグループ化は、グループ化のタイプを示すタイプフィールドを有する。サンプルグループ化は、リンクされた2つのデータ構造により表現される:(1)SampleToGroup(sbgpボックス)は、サンプルのサンプルグループへの割り当てを表現し、(2)SampleGroupDescriptionボックス(sgpdボックス)は、グループのプロパティを記述する各サンプルグループのサンプルグループエントリを含む。種々のグループ化基準に基づき、SampleToGroupおよびSampleGroupDescriptionボックスの複数のインスタンスがあることもある。これらは、グループ化のタイプを示すために使用されるタイプフィールドにより区別される。
【００３２】
図3Aは、サンプルグループボックスの入れ子構造を示す簡易化したボックス階層を提供する。サンプルグループボックス(SampleGroupDescriptionボックスおよびSampleToGroupボックス)は、サンプルテーブル(stbl)ボックス内に属し、サンプルテーブル(stbl)ボックスは、ムービー(moov)ボックス内で、メディア情報(minf)、メディア(mdia)、およびトラック(trak)ボックスに(その順序で)包含されている。
【００３３】
SampleToGroupボックスは、ムービーフラグメントに属することが許可されている。したがって、サンプルグループ化はフラグメントごとに行われてもよい。図3Bは、SampleToGroupボックスを含むムービーフラグメントを含んだファイルの例を示す。
【００３４】
ISOベースメディアファイルフォーマットは、エディットリストボックスを介した再生時刻変更およびファイルメタデータ再オーサリング(reauthoring)という、2つのタイプの編集動作をサポートする。エディットリストボックスは、メディア構成タイムラインがどのように再生タイムラインに変換されるかを規定し、メディアタイムラインを複数セクションに分割すること、およびそれらセクションを再生タイムライン内のタイムスライスへマッピングすることを可能にする。したがって、エディットリストボックスは、再生からメディアサンプルを省略すること、再生においてメディアセクションの順序を変更すること、およびメディアセクションの再生レートを変更することを可能にする。なお、例えばエディットリストボックスにより提供される機能の柔軟性がプレーヤ実装に対し課題をもたらすため、エディットリストボックスは、すべてのプレーヤによってはサポートされていない。さらに、エディットリストボックスを使用することで、moovボックスおよびmoofボックス内の再生されないメディアサンプルまたは再生されないメディアサンプルの記述に使用されるストレージ空間が解放可能となるわけでもない。その結果、多数のファイルエディタは通常、エディットリストボックスを使用せず、ファイルメタデータの再オーサリングによってファイルを変更する。
【００３５】
ISOベースメディアファイルフォーマットから得られたファイルに含まれているマルチメディアプレゼンテーションが、メディアデータの追加または削除により変更されると、ファイルメタデータは再オーサリングされなければならない。マルチメディアを後に削除または追加することによってファイルメタデータを完全に再オーサリングすることが必要とならないような形で、ファイルは何度もオーサリングされてもよい。例えば、トラックのメディアサンプルを含むチャンクが少ししかなければ、完全なトラックが直接的な形で消去されてもよい。
【００３６】
マルチビュービデオ符号化では、別々のカメラから出力され別々のビューにそれぞれ対応する複数ビデオシーケンスが、1つのビットストリームにコード化される。特定のビューを表示するために、復号後、当該ビューに属する復号済みピクチャが再構築および表示される。2つ以上のビューが再構築および表示されることも可能である。
【００３７】
マルチビュービデオ符号化には、自由視点ビデオ/テレビ、3D TV、および監視を含め、幅広い種類の用途がある。現在、ISO/IEC動画専門家集団(MPEG)およびITU-Tビデオ符号化専門家集団の合同ビデオチーム(JVT:Joint Video Team)が、MVC標準の開発に取り組んでおり、これはH.264/AVCの拡張となる。以下、この2つの(ドラフト)標準を、それぞれMVCおよびAVCと呼ぶ。
【００３８】
MVCの最新の共同ドラフトは、下記の非特許文献１に記載されている。
【非特許文献１】JVT-AA209 "マルチビュービデオ符号化に関する共同ドラフト7.0(Joint Draft 7.0 on Multiview Video Coding)"、第27回JVT会議、スイス国ジュネーブ、2008年4月 http://ftp3.itu.ch/av-arch/jvt-site/2008_04_Geneva/JVT-AA209.zip
【００３９】
マルチビュービデオビットストリームは、いくつのビュー、およびどのビューの表示が望まれるかに応じて、様々な方法で復号されてもよい。所定範囲時間の、特定の特性を備えるNビューのオートステレオスコピックディスプレイにおける出力には、特定セットのNビューがもっとも好ましいこともあり、その一方で、違う特性のセットを備える、または別の範囲時間のNビューのオートステレオスコピックディスプレイには、別のセットのNビューがもっとも好ましいこともある。さらに、好ましいセットのNビューが複数あり、ユーザがそこから選択すること、またはそれをナビゲートすることができることもよくある。Nの値は、1からビットストリーム内のビューの総数まで様々であり、ディスプレイの機能に従い復号/再生時に選択されるべきである。なお、出力用の好ましいセットのNビューは、ビュー間の依存関係により、Nビューを超える復号を必要とすることもある。
【００４０】
以下、図4を参照する。例示のMVC復号順序(すなわちビットストリーム順序)が示されている。この復号順序構成は、タイムファースト符号化と呼ばれる。各アクセスユニットが、1つの出力時間インスタンスのすべてのビューの符号化ピクチャを含むよう定義されている。なお、アクセスユニットの復号順序は、出力または表示順序と一致しないこともある。
【００４１】
以下、図5を参照する。マルチビュービデオ符号化の例示のMVC予測(各ビュー内のピクチャ間予測およびビュー間予測両方を含む)構造が示されている。示されている構造では、予測が矢印により示されており、ポイントされるオブジェクトが、ポイントのもとのオブジェクトを予測参照に使用する。
【００４２】
MVCにおいて、ビュー間予測は、テクスチャ予測のみによってサポートされ(すなわち、ビュー間予測には再構築されたサンプル値のみが使用できる)、ビュー間予測には、現在のピクチャと同じ出力時間インスタンスの、再構築されたピクチャのみが使用される。ビュー間予測において再構築されたサンプル値が使用されるという事実はさらに、MVCがマルチループ復号を利用するということを暗示する。換言すれば、動き補償および復号済みピクチャ再構築が、各ビューに対し実行される。
【００４３】
H.264/AVC、SVC、およびMVCビットストリームは、復号順に並んだネットワーク抽象化層(NAL:Network Abstraction Layer)ユニットを、バイトストリームフォーマットで、または外部フレーム化された形で含む。NALユニットは、ヘッダおよびペイロードから成る。NALユニットヘッダは、NALユニットのタイプ、およびNALユニットに含まれている符号化スライスが参照ピクチャまたは非参照ピクチャの一部であるかどうかを示す。NALユニットヘッダの第1バイトの後、NALユニットヘッダエクステンション(3バイト)が続く。NALユニットヘッダエクステンションは、MVCとの関連でNALユニットのプロパティを記述する構文要素を含む。
【００４４】
付加拡張情報(SEI)メッセージは、H.264/AVC、SVC、およびMVCビットストリームに含まれうる構文構造である。SEIメッセージは、出力ピクチャ内のサンプル値の復号に必要ではないが、ピクチャ出力タイミング、レンダリング、エラー検出、エラーコンシールメント、およびリソース予約などの関連プロセスを支援する。いくつかのSEIメッセージが、H.264/AVC、SVC、およびMVCにおいて規定されている。ユーザデータSEIメッセージにより、組織および企業は、それが使用するSEIメッセージを規定できる。H.264/AVC、SVC、およびMVC標準は、規定されたSEIメッセージの構文およびセマンティクスを含むが、復号器においてこのメッセージを処理するプロセスは定義されていない。その結果、符号化器は、SEIメッセージを作成するときに関連のある標準に従うことが要求され、関連のある標準に準拠する復号器は、出力順序が一致するようSEIメッセージを処理することは要求されない。SEI NALユニットは、1つ以上のSEIメッセージを含む。MVCスケーラブルネスティングSEIメッセージは、1つ以上の通常のH.264/AVC SEIメッセージを含み、そのメッセージが関係するビューを示す。その結果、MVCスケーラブルネスティングSEIメッセージは、ベースビュー以外のビューに関して、H.264/AVC SEIメッセージの構文を再使用することを可能にする。
【００４５】
マルチビュービデオの取得システムの情報は、レンダリングシステム上で正確に3次元エクスペリエンスを再構築するために必須である。マルチビュービデオ取得システムのパラメータは、内部パラメータおよび外部パラメータに分類されてもよい。内部パラメータは、個々のユニットとしての単一のカメラの特性を、マルチビュー取得システムの他のカメラとは独立して示す。なお、内部パラメータは、光学系(および特にレンズ)およびイメージセンサなど、カメラ処理チェーンの任意の部分からの特性を含んでもよい。典型的な内部カメラパラメータは、限定はされないが(光学および写真科学では周知の用語である)焦点または焦点距離、主点、および放射歪曲の標示を含む。外部パラメータは、外界に関係する単一のカメラの特性を示す。典型的な外部カメラパラメータは、限定はされないが、ワールド座標における相対位置(x,y,z)、および3つの軸すべてに対するカメラの回転(すなわちピッチ、ロール、ヨー/チルト)を含む。外部カメラパラメータは、座標系の原点(origo)などの選ばれた基準に対するものである。ドラフトMVC標準のマルチビュー取得情報SEIメッセージが、マルチビュービデオの取得情報のフォーマットの例である。
【００４６】
MPEGでは、AVCファイルフォーマットの修正としてのマルチビュービデオ符号化(MVC)のファイルフォーマットを規定する作業を進めている。SVCファイルフォーマットに含まれる多数の構造が、おそらくMVCファイルフォーマットでも利用されることになる。MVCファイルフォーマットにおいておそらく利用されるであろうこうしたSVCファイルフォーマット構造の一部について、以下の各段落に記載する。
【００４７】
同じサンプルに属するNALユニットをグループ化するために、アグリゲータが使用される。アグリゲータは、SVC VCL NALユニットまたはMVC VCL NALユニットと同じNALユニットヘッダを使用するが、異なる値のNALユニットタイプを備える。アグリゲータは、NALユニットの効率的なグループ化を可能にするファイルフォーマット内部構造である。アグリゲータは、サンプル構造との関連ではNALユニットと見なされる。サンプルにアクセスする(すなわち、ファイルからサンプルを得て、それを復号器に渡す)一方で、アグリゲータは (その含まれている、または参照されているNALユニットを残して) 削除されなければならない。アグリゲータは、ファイルフォーマット外のストリームに存在してはならない。アグリゲータは、その中(その長さにより示されるサイズ内)のNALユニットの包含による集約、さらにそれに続くNALユニット(その中のadditional_bytesフィールドにより示される領域内)の参照による集約の両方を行ってもよい。ストリームがAVCファイルリーダによりスキャンされると、包含されたNALユニットのみがアグリゲータの"中"と見なされ、これが、例えば、AVCファイルリーダが、不必要なSVC VCL NALユニットまたはMVC VCL NALユニットのセット全体をスキップすることを可能にする。同様に、AVC NALユニットが参照により集約されていれば、AVCリーダはそれをスキップせず、そのリーダに関してはストリーム内にとどまる。ストリームをスキャンするとき、a)アグリゲータが認識されなければ(例えばAVCリーダまたは復号器により)、アグリゲータはその包含されているコンテンツとともに容易に破棄され、b)アグリゲータが必要なければ(すなわち、それが望まれていないレイヤまたはビューに属する)、アグリゲータならびに包含および参照両方によるそのコンテンツは (その長さおよびadditional_bytesフィールドを使用して) 容易に破棄され、c)アグリゲータが必要であれば、そのヘッダが容易に破棄されてそのコンテンツが保持される。アグリゲータは、その他任意のNALユニットの様にサンプル内に格納される。すべてのNALユニットは、アグリゲータ内で復号順序を保つ。
【００４８】
以下のサンプルグループは、SVCまたはMVCストリームの構造を記述して、ストリームのサブセットの情報の取得およびサブセットのいずれかの抽出を容易にするために、SVCまたはMVCトラックにおいて使用されてもよい。以下で定義されるいくつかのボックスは、サンプルグループ記述、すなわちSVCストリームのScalableGroupEntry（スケーラブルグループエントリ）、およびMVCストリームのMultiviewGroupEntry(マルチビューグループエントリ)に存在してもよい。各ScalableGroupEntryまたはMultiviewGroupEntryは、それぞれSVCストリームまたはMVCストリームのサブセットを記述する。サブセットはそれぞれ、層（tier）に関連し、1つ以上のオペレーティングポイント(operating point)を含むこともある。オペレーティングポイントは、ビットストリームのサブセットである。MVCストリームのオペレーティングポイントは、特定の時間解像度における、複数ビューの特定のセットを表す。MVCの文脈では、層は、複数ビューの特定のセットの中の、複数時間サブセットの特定のセットを表す。'scif'または'mvif'というグループ化タイプが、それぞれScalableGroupEntryまたはMultiviewGroupEntryを定義するために使用される。各層に関して、2つ以上のScalableGroupEntryまたはMultiviewGroupEntryがそれぞれ、グループ化タイプ'scif'または'mvif'のSampleGroupDescriptionBox内にあってもよい。こうしたエントリのうちの1つのみが、層の一義的定義である。
【００４９】
ScalableGroupEntryおよびMultiviewGroupEntryは、SampleGroupDescriptionボックスに含まれるが、グループ化は、こうしたグループがサンプルのセクション、つまりNALユニットを記述するために使用されることから、各サンプルが2つ以上の層に関連することもあるため、真のサンプルグループ化ではない。結果として、グループが実際にサンプル全体を記述するということでない限り、グループ化タイプ'scif'または'mvif'のSampleToGroupボックスがないということもあってもよい。グループ化タイプ'scif'または'mvif'のSampleToGroupボックスが存在しても、その情報は、層のNALユニットの抽出には必要ない。代わりに、マップグループが、サンプル内のNALユニットの'パターン'を常に記述し、NALユニットの抽出に必要とされ得るNALユニットから層へのマッピング情報を提供しなければならない。
【００５０】
層情報ボックス、層ビットレートボックス、SVC優先範囲ボックス、初期パラメータセットボックス、バッファリングボックス、層依存関係ボックスが、SVCファイルフォーマットに関するのと同じように、MVCファイルフォーマットに関して規定される。具体的には、それらはMultiviewGroupEntryに包含されてもよい。
【００５１】
各ScalableGroupEntryまたはMultiviewGroupEntryは、groupIDおよびtierIDと関連する。tierIDエントリは、tierIDの値により示されるその依存関係の観点から順序付けられる。tierIDの値が大きいほど、上位の層を示す。値0は、最下位層を示す。層の復号は、それより上位の層のいずれからも独立しているが、それより下位の層には依存することもある。したがって、最下位層は独立して復号可能であり、層1の復号は層0に依存することもあり、層2の復号は層0および1に依存することなどもある。層は、ビデオストリーム内の1つ以上のレイヤまたはビューからのデータを含んでもよい。
【００５２】
各層に対し、厳密な一義的定義がなければならない。各ScalableGroupEntryまたはMultiviewGroupEntryに関して、フィールドprimary_groupIDがフィールドgroupIDと等しい場合、このグループがこの層の一義的定義であり、次が当てはまる。TierInfoBoxおよびSVCPriorityRangeBoxが存在するものとする。特定の層に関しては、オプションのボックスがいずれも存在しなければ、その情報はその層に関して定義されない(層情報の継承はない)。特定の層に関して、TierDependencyBoxが存在しなければ、この層は、それより低いtierIDを備えるすべての層に依存してもよい。InitialParameterSetBoxが存在すれば、この層およびそれが依存するより下位の層すべてを復号するのに必要なパラメータセットが、このボックスを用いて示される。このボックスが存在しなければ、SVCDecoderConfigurationRecordまたはMVCDecoderConfigurationRecordにより与えられるパラメータセットすべてが必要かどうかは示されない。パラメータセットストリームが使用される場合、InitialParameterSetBoxは存在しないものとする。tierIDの値は、連続的であることは要求されない。さらに、各ScalableGroupEntryに関して、フィールドprimary_groupIDがフィールドgroupIDと等しい場合、SVCDependencyRangeBoxが存在するものとする。さらに、各MultiviewGroupEntryに関して、フィールドprimary_groupIDがフィールドgroupIDと等しい場合、ViewIdentifierBoxが存在するものとする。
【００５３】
指定されるtierIDそれぞれに対して、それに関連する少なくとも1つのNALユニットがあるものとする。換言すれば、トラック内で使用されていない層を指定することは許可されない。エレメンタリストリーム内の各NALユニットは、次の通りtierID値と関連付けられる。まず、各サンプルが、後で規定される、タイプ"scnm"のサンプルグループ化によってgroupID値のマップに関連付けられる。したがって、"scnm"サンプルグループ化は、各サンプル内のNALユニットとgroupID値との間の関連を示す。次に、groupIDの値が、タイプ"scif"または"mvif"のサンプルグループ記述ボックスを使用してtierIDの値に関連付けられてもよい。特定のtierID値と関連するNALユニットは、それより小さいtierID値すべてに関連するNALユニットの全部または一部を、適切な復号動作のために必要とすることもあるが、それより大きなtierIDに関連するいずれのNALユニットも、決して必要とすることはない。(すなわち、依存関係は、それより下位の層の方向にのみ存在する。)サーバまたはプレーヤは、タイプ"scif"または"mvif"のサンプルグループ記述ボックスのエントリ内に存在する記述フィールドの値(例えばフレームレートなど)に基づき、適切な復号動作に必要となるtierID値のサブセットを選んでもよい。
【００５４】
MultiviewGroupEntryは、次のように定義される。
【００５５】
グループタイプ(Group Type):'mvif'
コンテナ(Container): サンプルグループ記述ボックス(Sample Group Description Box)('sgpd')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロ以上
【００５６】
MultiviewGroupEntryの構文は次の通りである。
class MultiviewGroupEntry() extends VisualSampleGroupEntry ('mvif') { 
unsigned int(8) groupID;
unsigned int(8) primary_groupID;
unsigned int(4) reserved = 0;
unsigned int(1) is_tl_switching_point;
unsigned int(3) reserved = 0;
unsigned int(8) tl_switching_distance;
if (groupID == primary_groupID)    // primary definition of tier
{
ViewIdentifierBox();           // Mandatory
TierInfoBox();                 // Mandatory
TierDependencyBox();           // Mandatory
SVCPriorityRangeBox();         // Mandatory
//Optional Boxes or fields may follow when defined  later
TierBitRateBox();              // optional
BufferingBox();                // optional
InitialParameterSetBox();      // optional
ProtectionSchemeInfoBox();     // optional
}
}
【００５７】
MultiviewGroupEntryのセマンティクスは次の通りである。
【００５８】
groupIDは、グループエントリの識別子を与える。groupIDは、任意の値であるが、固有のものとする。
【００５９】
primary_groupIDは、この層の一義的定義を含むグループを指定する。この値がgroupIDの値と等しければ、このグループがこの層の一義的定義である。
【００６０】
1にセットされているis_tl_switching_pointは、このグループの要素に関しては、ISO/IEC14496-10付属書類Hにおいて規定されているtemporal_idの最高値を有するものが、時間レイヤ切り替えポイントであることを示す。このグループの要素のtemporal_idの最高値をtIdとすると、tl_switching_distanceにより示されるtId-1に等しいtemporal_idを備える要素が処理されている(伝送および復号されている)ならば、tId-1に等しいtemporal_idを備える時間レイヤから、tIdと等しいtemporal_idを備える時間レイヤに、tIdに等しいtemporal_idを有する要素のいずれかにおいてビットストリームが切り替えられてよい。0と等しいis_tl_switching_pointは、ISO/IEC14496-10付属書類Hにおいて規定されているtemporal_idの最高値を有するこのグループの要素が、時間レイヤ切り替えポイントであることも、またはそうでないこともあるということを示す。
【００６１】
tl_switching_distanceは、is_tl_switching_pointが1のときに使用される。これは、切り替えポイントから、時間レイヤtIdにおける、またはその上位のストリームの復号可能性を確保するために復号されなければならない、tId-1と等しいtemporal_idを備える時間レイヤのサンプルの数を示す。値0は、それより下位の時間レイヤに依存しない時間切り替えポイントを示す。特定のサンプルに関して、必要とされるこの距離は、特定のサンプルの時間並列メタデータトラックにおける時間レイヤ切り替え距離ステートメント(temporal layer switching distance statement)により短縮されてもよい。
【００６２】
NALユニットは、次の通りマップグループおよび層にマッピングされる。SVCまたはMVCアクセスユニット内のスケーラビリティまたはビュー階層を記述するために、2種類のサンプルグループが使用される:a)サンプルのセクションを記述するグループ。グループそれぞれに関して、グループプロパティを定義するScalableGroupEntryまたはMultiviewGroupEntryが存在する。なお、これらはストリーム全体ではなく層を記述する。したがって、アクセスユニット全体ではなく、任意の時点に1つの層に属するNALユニットを記述する。b)アクセスユニット内の各NALユニットの(grouping_type'scnm'の)マップグループへのマッピングを記述するマップグループ。特定のマップグループに属するNALユニットの異なるシーケンスそれぞれに関して、ScalableNALUMapEntryが存在する。アクセスユニット内で、マップグループは層のすべてのNALユニットを含む。
【００６３】
マップグループを定義するには、すべてのアクセスユニットに対し、限られた数のマップグループ化パターンがあることが必要である。所与の層の連続するアクセスユニットに、異なる数のNALユニットがある場合、アグリゲータが、こうした異なる構造に一貫性をもたせ、必要なマップグループの数を減らすために使用されてもよい。同じマップグループ定義、ScalableNALUMapEntryが、SVCファイルフォーマットおよびMVCファイルフォーマット両方に使用される。
【００６４】
MVCまたはAVCストリームのいずれかとして解釈され得るストリームに復号器構成レコード(decoder configuration record)が使用される場合、AVC復号器構成レコードは、AVC準拠のベースレイヤのプロパティを反映するものとし、例えば、AVCベースレイヤを復号するのに必要なパラメータセットのみを含むものとする。パラメータセットストリームは、AVCストリームと同様にMVCストリームで使用されてもよい。その場合、パラメータセットは、復号器構成レコードに含まれないものとする。MVCDecoderConfigurationRecordは、SVCDecoderConfigurationRecordと構造的にも意味的にも等価である。
【００６５】
マルチビュービデオストリームは、ファイル内の1つ以上のビデオトラックにより表される。各トラックは、ストリームの1つ以上のビューを表す。或るトラックにより表されるビューが、別のトラックにより表される別のビューを、ビュー間予測参照として使用する場合、タイプ'mvpr'のトラック参照が、ビュー間予測のためにソーストラックを参照するトラック内に含まれるものとする。
【００６６】
MVCサンプルは、1つ以上のビューコンポーネント、および関連する非VCL NALユニットから成る。1つ以上のMVCトラックのサンプルからアクセスユニットを再構築するために、まず出力ビューが判断される。判断された出力ビューを復号するために必要なビューは、'mvpr'トラック参照または層依存関係ボックスから結論付けられてもよい。いくつかのトラックがアクセスユニットのデータを含む場合、トラック内の各サンプルのアラインメントが復号時間に実行され、すなわち、エディットリストを考慮することなく時間-サンプルテーブル(time-to-sample table)のみを使用して実行されてもよい。アクセスユニットは、必要なトラックおよび層内の個別のサンプルから再構築され、この再構成は、そのNALユニットを、一般的レベルにおいて、以下に示されるようにMVC標準により要求される順序で配置することによる。
【００６７】
関連するパラメータセットトラックから、および関連するエレメンタリストリームトラックからのすべてのパラメータセットNALユニット。
【００６８】
関連するパラメータセットトラックから、および関連するエレメンタリストリームトラックからのすべてのSEI NALユニット。
【００６９】
昇順のビュー順序インデックス値のビューコンポーネント。ビューコンポーネント内のNALユニットは、サンプル内でのその出現順序となっている。
【００７０】
なお、SVCファイルフォーマットにおいて規定されているエクストラクタが、アクセスユニットを含むサンプルフォーマットを定義するために使用されてもよい。しかし、そのようなサンプルフォーマットは、任意のビューが出力に選択され得るため、MVCにはあまり適していない。出力ビューのセットおよびビュー間依存関係階層が、どのビューが復号に必要かを決定する。種々のセットのビューの出力にそれぞれ適するビットストリームサブセットの数は、非常に多いこともある。例えば、36のステレオビューサブセットが、従来通りに編成された9ビューMVCビットストリームから得られることもある。エクストラクタが使用された場合、出力ビューの各組み合わせに対し別個のトラックが作成されなくてはならず、これは、不必要に大きなファイルサイズにつながる。従来通りに編成された9ビューMVCビットストリームに関して、すべてのステレオビューサブセットのエクストラクタは少なくとも約500キロビット毎秒要することになり、これはファイルサイズの大幅な増大をもたらす。本発明の様々な実施形態は、いずれにせよ、サンプルがアクセスユニットを含むサンプルフォーマットに適用でき、エクストラクタは、SVCファイルフォーマットと同様に使用される。
【００７１】
MVCのSampleEntry(サンプルエントリ)のフォーマットは、次のように定義される。
【００７２】
ボックスタイプ(Box Types):'avc1','avc2','mvc1'
コンテナ(Container): サンプル記述ボックス('stbl')
必須(Mandatory)    : avc1、または、avc2もしくはmvc1ボックスのいずれかが必須
数(Quantity)       : 1つ以上のSampleEntryが存在してもよい
【００７３】
MVCエレメンタリストリームが、使用可能なAVC準拠ベースレイヤを含む場合、AVC VisualSampleEntry('avc1'または'avc2')が使用されるものとする。ここで、Entry（エントリ）は最初にAVCConfigurationBox（AVC構成ボックス）を含むものとし、場合により以下に定義されるMVCConfigurationBox（MVC構成ボックス）が続く。AVCConfigurationBoxは、AVCDecoderConfigurationRecordにより定義されるAVC準拠ベースレイヤに関連するプロファイル、レベルおよびパラメータセット情報を記述する。MVCConfigurationBoxは、MVCConfigurationBoxに格納された、MVCDecoderConfigurationRecordにより定義される非ベースビューを含むストリーム全体に関連するプロファイル、レベルおよびパラメータセット情報を記述する。
【００７４】
MVCエレメンタリストリームが、使用可能なAVCベースビューを含まなければ、MVC VisualSampleEntry('mvc1')が使用されるものとする。MVC VisualSampleEntryは、以下に定義される通り、MVCConfigurationBoxを含むものとする。これは、MVCDecoderConfigurationRecordを含む。
【００７５】
優先割り当てURIが、priority_id値を割り当てるために使用されるメソッドの (URI空間における)名前を提供する。これがAVCサンプルエントリまたはMVCサンプルエントリ内に存在する場合、厳密に1つのURIが存在するものとし、ストリームにおけるpriority_id割り当てを記述する。ここでURIは、名前のみとして扱われる。デリファレンス可能であるべきであるが、これは必須ではない。ファイルリーダは、いくつかのメソッドを認識できることもあり、その結果、priority_idに基づきどのストリーム抽出動作が適するかを認識する。
【００７６】
SampleEntry(サンプルエントリ)名'avc1'は、AVCConfigurationBox内に与えられた構成(プロファイルおよびレベルを含む)のもとで動作するAVC復号器から見て、ストリーム全体が、準拠し使用可能なAVCストリームであるときにのみ使用されてもよい。NALユニットに似るファイルフォーマット特有構造が存在することもあるが、AVCベースデータにアクセスするために使用されてはならない。すなわち、AVCデータは、アグリゲータに含まれてはならない(しかしadditional_bytesフィールドにより参照されるバイト内に含まれてもよい)。SampleEntry名'avc2'は、意図されるAVCストリームを形成するために、アグリゲータが、含まれているNALユニットに関して検査されなければならないことを示す。アグリゲータは、'avc1','avc2'または'mvc1'トラック内のMVC VCL NALユニットに使用されてもよい。
【００７７】
ボックスMVCConfigurationBox、ViewScalabilityInfoSEIBox、IntrinsicCameraParametersBox、およびExtrinsicCameraParametersBoxのうちの任意のものが、'avc1'または'avc2'サンプルエントリに存在してもよい。こうした場合には、それぞれ以下のAVCMVCSampleEntryまたはAVC2MVCSampleEntry定義が適用される。
【００７８】
次の表は、ビデオトラックに関して、MVCエレメンタリストリームが1つ以上のトラック、構成、およびMVCツールに格納されている場合の、サンプルエントリの考えられる使用をすべて示す(別のトラックに常に使用されるタイムドメタデータを除く)。
【００７９】
【表１】
0005462259.tif 000002
【００８０】
サンプルエントリの構文は次のように規定される。
class MVCConfigurationBox extends Box('mvcC') {
MVCDecoderConfigurationRecord() MVCConfig;
}
class AVCMVCSampleEntry() extends AVCSampleEntry (){
ViewIdentifierBox  view_identifiers;               // mandatory
MVCConfigurationBox  mvcconfig;                    // optional
ViewScalabilityInfoBox  view_scalability;          // optional
SVCPriorityAssignmentBox  method;                  // optional
IntrinsicCameraParametersBox  intrinsic_camera_params;    // optional
ExtrinsicCameraParametersBox  extrinsic_camera_params;    // optional
}
class AVC2MVCSampleEntry() extends AVC2SampleEntry (){
ViewIdentifierBox  view_identifiers;               // mandatory
MVCConfigurationBox  mvcconfig;                    // optional
MPEG4BitRateBox bitrate;                           // optional
MPEG4ExtensionDescriptorsBox descr;                // optional
ViewScalabilityInfoBox  view_scalability           // optional
SVCPriorityAssignmentBox  method;                  // optional
IntrinsicCameraParametersBox  intrinsic_camera_params;    // optional
ExtrinsicCameraParametersBox  extrinsic_camera_params;    // optional
}
// Use this if the track is NOT AVC compatible
class MVCSampleEntry() extends VisualSampleEntry ('mvc1'){
ViewIdentifierBox  view_identifiers;               // mandatory
MVCConfigurationBox  mvcconfig;
MPEG4BitRateBox bitrate;                           // optional
MPEG4ExtensionDescriptorsBox descr;                // optional
ViewScalabilityInfoBox  view_scalability;          // optional
SVCPriorityAssignmentBox  method;                  // optional
IntrinsicCameraParametersBox  intrinsic_camera_params;    // optional
ExtrinsicCameraParametersBox  extrinsic_camera_params;    // optional
}
【００８１】
SampleEntryのフィールドのセマンティクスは、(メソッド、ビットレート、およびdescrパラメータに関して)SVCファイルフォーマットのもの、または以下に規定されるものと等価である。view_scalabilityは、ISO/IEC 14496-10付属書類Hで規定されているビュースケーラビリティ情報SEIメッセージのみを含むSEI NALユニットを含む。
【００８２】
IntrinsicCameraParametersbox(内部カメラパラメータボックス)は次のように定義される。
【００８３】
ボックスタイプ(Box Types):'icam'
コンテナ(Container): SampleEntry ('avc1','avc2','mvc1')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【００８４】
IntrinsicCameraParametersboxの構文は次のように定義される。
class IntrinsicCameraParametersBox extends FullBox ('icam', version=0, flags) 
{
unsigned int(32)  prec_focal_length
unsigned int(32)  prec_principal_point
unsigned int(32)  prec_skew_factor
unsigned int(32)  exponent_focal_length_x
signed int(32)    mantissa_focal_length_x 
unsigned int(32)  exponent_focal_length_y
signed int(32)    mantissa_focal_length_y 
unsigned int(32)  exponent_principal_point _x
signed int(32)    mantissa_principal_point _x  
unsigned int(32)  exponent_principal_point _y
signed int(32)    mantissa_principal_point _y 
unsigned int(32)  exponent_skew_factor
signed int(32)    mantissa_skew_factor
}
【００８５】
IntrinsicCameraParametersbox(外部カメラパラメータボックス)のセマンティクスは、MVCのマルチビュー取得情報SEIメッセージのものと等価である。
【００８６】
ExtrinsicCameraParametersBoxは次のように定義される。
【００８７】
ボックスタイプ(Box Types):'ecam'
コンテナ(Container): SampleEntry ('avc1','avc2','mvc1')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【００８８】
ExtrinsicCameraParametersBoxの構文は次のように定義される。
class ExtrinsicCameraParametersBox extends FullBox ('ecam', version=0, flags) 
{
unsigned int(32)    prec_rotation_param
unsigned int(32)    prec_translation_param
for (j=1; j<=3; j++) { /* row */
for (k=1; k<=3; k++) { /* column */
unsigned int(32)    exponent_r[i][j][k]    
signed int(32)    mantissa_r[i][j][k]    
}
}
}
【００８９】
ExtrinsicCameraParametersBoxのセマンティクスは、MVCのマルチビュー取得情報SEIメッセージのものと等価である。
【００９０】
ViewIdentifierBox（ビュー識別子ボックス）は次のように定義される。
【００９１】
ボックスタイプ(Box Types):'vwid'
コンテナ(Container): SampleEntry ('avc1','avc2','mvc1')またはMultiviewGroupEntry
必須(Mandatory)    : はい(SampleEntryおよびMultiviewGroupEntry内の一義的グループ定義に関して)
数(Quantity)       : 厳密に1(SampleEntryおよびMultiviewGroupEntry内の一義的グループ定義に関して)
MultiviewGroupEntry内の非一義的グループ定義に関してはゼロ
【００９２】
SampleEntryに含まれる場合、このボックスは、MVCのview_id構文要素の値によりトラック内に含まれているビューを示す。MultiviewGroupEntryに含まれている場合、このボックスは、MVCのview_id構文要素の値により個別の層に含まれているビューを示す。このボックスはさらに、列挙されるビューそれぞれのビュー順序インデックスを示す。さらに、このボックスは、ViewIdentifierBoxがSampleEntryまたはMultiviewGroupEntryに含まれている場合にそれぞれトラックまたは層内に含まれるtemporal_idの最小および最大値を含む。
【００９３】
ViewIdentifierBoxの構文は次のように定義される。
class ViewIdentifierBox extends FullBox ('vwid', version=0, flags) 
{
unsigned int(16)    num_views;
for (i=0; i<num_views; i++) {
unsigned int(6) reserved1 = 0;
unsigned int(10) view_id;
unsigned int(6) reserved2 = 0;
unsigned int(10) view_order_index;
}
unsigned int(2) reserved3 = 0;
unsigned int(3) min_temporal_id;
unsigned int(3) max_temporal_id;
}
}
【００９４】
ViewIdentifierBoxのセマンティクスは次のように定義される。
【００９５】
num_viewsは、ViewIdentifierBoxがサンプルエントリ内に存在する場合、トラックに含まれているビューの数を示す。ViewIdentifierBoxがMultiviewGroupEntry内に存在する場合、num_viewsは、個別の層に含まれているビューの数を示す。
【００９６】
view_idは、ViewIdentifierBoxがサンプルエントリまたはMultiviewGroupEntryに含まれている場合にそれぞれトラックまたは層内に含まれているビューに関してMVCのview_id構文要素の値を示す。
【００９７】
view_order_indexは、ViewIdentifierBoxがサンプルエントリまたはMultiviewGroupEntryに含まれている場合にそれぞれトラックまたは層内に含まれているビューに関してMVCにおいて規定されているVOIdx変数の値を示す。
【００９８】
min_temporal_id、max_temporal_idは、ViewIdentifierBoxがサンプルエントリもしくはMultiviewGroupEntry内に含まれている場合にそれぞれ、トラックまたは層にマップされたNALユニットのNALユニットヘッダエクステンション内に存在するtemporal_id構文要素の最小または最大値をとる。AVCストリームに関しては、これは、プリフィックスNALユニット内にある値、またはそうなると考えられる値をとる。
【００９９】
'avc1'または'avc2'サンプルエントリに関連しMVCエレメンタリストリームを含むトラックが、代替グループに含まれていれば、他のグループ要素が、トラックに含まれているベースビューの代替となるものである。'mvc1'サンプルエントリに関連するトラックが代替グループに含まれていれば、他のグループ要素は'mvc1'トラックと等しい多さのビューを含むマルチビュービデオトラックであり、'mvc1'トラックの各ビューは他のトラック内にそれぞれのビューを有する。
【０１００】
多重記述コーダは、記述として知られる多数の独立したストリームを1つの原信号から作り出す。各記述は、典型的には類似した重要性を有し、記述はいずれも、基本的な品質の復号信号を再現するのに十分であり、受信される記述の関数として再現品質が改善する。したがって、各記述が相互に関係することは明らかであり、多重記述符号化(MDC:Multiple Description Coding)は、単一記述符号化と比較して圧縮効率に不利な条件がある。この相互関係はさらに、欠落している記述を復号器が隠蔽することができるようにすることもある。多重記述符号化には、空間、周波数、または時間領域分割を利用するいくつかのアルゴリズムが提案されている。
【０１０１】
ISOベースメディアファイルフォーマットは、代替グループを形成してグループを切り替える手段を、次のように規定している。alternate_groupは、トラックヘッダボックス内で、トラックのグループまたは集合を指定する整数値を伝えるパラメータである。このフィールドが0であれば、他のトラックとの可能な関係についての情報はない。このフィールドは、0でない場合、互いに代替データを含むトラックに関しては同じであり、違うグループに属するトラックに関しては違っていなければならない。常に代替グループ内の1つのみのトラックが再生またはストリームされるべきであり、ビットレート、コーデック、言語、パケットサイズなどの属性によって、グループ内の他のトラックと区別できなければならない。代替グループは、1つしか要素を有しないこともある。
【０１０２】
ファイル内に格納される典型的なプレゼンテーションは、ビデオに1つ、オーディオに1つなど、メディアタイプごとに1つの代替グループを含む。そのようなファイルは、いくつかのビデオトラックを含むこともあるが、常にそのうち1つのみが再生またはストリーミングされるべきである。これは、すべてのビデオトラックを同じ代替グループに割り当てることによって達成される。
【０１０３】
代替グループ内のすべてのトラックがメディア選択の候補であるが、セッション中にそうしたトラックの一部の間で切り替えるのは意味をなさないかもしれない。例えば、異なるビットレートのビデオトラック間で切り替えてフレームサイズを保つことは許可するが、異なるフレームサイズのトラック間での切り替えは許可しなくてもよい。同様に、異なるビデオコーデックまたは異なるオーディオ言語のトラック間の、切り替えではなく選択を可能にすることが望ましいこともある。
【０１０４】
選択および切り替え用のトラック間の区別は、トラックを、代替グループに加えて切り替えグループに割り当てることにより対処される。1つの代替グループは、1つ以上の切り替えグループを含んでもよい。代替グループ内のすべてのトラックが、メディア選択の候補であり、その一方で、切り替えグループ内のトラックはさらにセッション中の切り替えに使用可能である。異なる切り替えグループは、異なるフレームサイズ、高/低品質など、異なるオペレーションポイントを表現する。
【０１０５】
非スケーラブルビットストリームの場合、いくつかのトラックが切り替えグループに含まれてもよい。同じことが、従来のAVCストリームなどの非階層スケーラブルビットストリームにも当てはまる。
【０１０６】
属性によりトラックにラベルを付けることによって、トラックを識別することができる。各トラックは、属性のリストを用いてラベル付けされるとよく、これは、特定の切り替えグループ内のトラックを記述するため、または別々の切り替えグループに属する別々のトラックを識別するために使用されてもよい。
【０１０７】
トラックのユーザデータボックス内で伝えられるトラック選択ボックスは、switch_groupパラメータおよびattribute_listを含む。
【０１０８】
switch_groupは、トラックのグループまたは集合を指定する整数である。このフィールドが0(デフォルト値)である場合、またはトラック選択ボックスがない場合は、再生またはストリーミング中にこのトラックが切り替えに使用されてよいかどうかについての情報はない。この整数は、0でなければ、相互間での切り替えに使用されてよいトラックについても同じであるものとする。同じ切り替えグループに属するトラックは、同じ代替グループに属するものとする。切り替えグループは、1つしか要素を有しないこともある。
【０１０９】
attribute_listは、属性のリストである。このリスト内の属性は、トラックの記述、または同じ代替または切り替えグループ内のトラックの識別基準として使用されるべきである。各識別属性は、トラックを区別するフィールドまたは情報へのポインタに関連する。
【０１１０】
"メディアファイルにおけるトラック関係性を示すシステムおよび方法(SYSTEM AND METHOD FOR INDICATING TRACK RELATIONSHIPS IN MEDIA FILES)"という発明名称の米国特許出願第11/844,300号は、特定のグループ化タイプに従ってトラックの1つまたは多数のグループを形成できるようにするトラック関係ボックス（TrackRelationBox）を提案している。代替トラック、切り替えトラック、階層符号化、および多重記述符号化のグループ化タイプが規定された。代替トラックグループ化タイプは、特定の代替グループに属するトラックの列挙を可能にし、すなわち、トラックヘッダボックス内のalternate_groupの各値にトラックの1つのグループがある。代替トラックグループ化タイプは、すべてのトラックのトラックヘッダボックスをトラバースせずに、使用可能な代替グループを特定するメカニズムをパーサに提供する。切り替えトラックグループ化タイプは、切り替えグループを特定する方法を提供し、これは、すべてのトラックのトラック選択ボックスを構文解析する代わりに使用することができる。階層符号化グループ化タイプは、階層(スケーラブル)ビットストリームを形成するトラックを特定する方法を提供する。このメカニズムは、すべてのトラックのトラック参照ボックス中をトラバースする代わりに、パーサにおいて使用されてもよい。多重記述符号化グループ化タイプは、相互に多重記述関係を有するビットストリームを含むトラックを関連付ける方法を提供する。
【０１１１】
TrackRelationBoxは次のように定義される。
【０１１２】
ボックスタイプ(Box Types):'trel'
コンテナ(Container): ムービーボックス(Movie Box)('moov')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【０１１３】
TrackRelationBoxの構文は次の通りである。
aligned(8) class TrackRelationBox
extends FullBox('trel', version = 0, flags) {
int i,j,k;
if(flags & 0x000001 == 1) {
unsigned int(16) num_alternate_groups;
for(i=0; i<num_alternatve_groups; i++) {
int(16) alternate_group_id;
unsigned int(16) num_tracks_in_alternate_group;
for(j=0; j<num_tracks_in_alternate_group; j++)
unsigned int(32) alternate_track_id;
}
}
if(flags & 0x000002 == 1) {
unsigned int(16) num_switch_groups;
for(i=0; i<num_switch_groups; i++) {
int(16) switch_group_id;
unsigned int(16) num_tracks_in_switch_group;
for(j=0; j<num_tracks_in_switch_group; j++)
unsigned int(32) switch_track_id;
}
}
if(flags & 0x000004 == 1) {
unsigned int(16) num_layered_groups;
for(i=0; i<num_layered_groups; i++) {
int(16) layered_group_id;
unsigned int(16) num_tracks_in_layered_group;
for(j=0; j<num_tracks_in_layered_group; j++) {
unsigned int(32) layered_track_id;
unsigned int(16) num_dependent_on_tracks;
for(k=0; k<num_layered_on_tracks; k++)
unsigned int(32) dependent_on_track_id;
}
}
}
if(flags & 0x000008 == 1) {
unsigned int(16) num_mdc_groups;
for(i=0; i<num_mdc_groups; i++) {
int(16) mdc_group_id;
unsigned int(16) num_tracks_in_mdc_group;
for(j=0; j<num_tracks_in_mdc_group; j++)
unsigned int(32) mdc_track_id;
}
}
}
【０１１４】
上記の構文では、"version"はTrackRelationBoxのバージョン(上記のように0)を指定する整数である。
【０１１５】
"flags"はフラグを備える24ビットの整数である。次のビットが定義される。ビット0が最下位ビット、ビット1が第2下位ビットなどである。ビット0が1と等しい場合、これは、このボックスに代替トラックグループの情報が存在するということを示す。ビット0が0と等しい場合、これは、このボックスに代替トラックグループの情報は存在しないということを示す。
【０１１６】
ビット1が1と等しい場合、これは、このボックスに切り替えトラックグループの情報が存在するということを示す。ビット1が0と等しい場合、これは、このボックスに切り替えトラックグループの情報は存在しないということを示す。
【０１１７】
ビット2が1と等しい場合、これは、このボックスに階層トラックグループ(layered track group)の情報が存在するということを示す。ビット2が0と等しい場合、これは、このボックスに階層トラックグループの情報は存在しないということを示す。
【０１１８】
ビット3が1と等しい場合、これは、このボックスにMDCトラックグループの情報が存在するということを示す。ビット3が0と等しい場合、これは、このボックスにMDCトラックグループの情報は存在しないということを示す。
【０１１９】
"num_alternate_groups"は、信号伝達される代替トラックグループの数を示す。"alternate_group_id"は、信号伝達される第i代替トラックグループの識別子を示す。値は0と等しくはない。alternate_group_idに関連する任意のトラックは、alternate_group_idと等しいalternate_group(トラックヘッダボックス内)を有する。0と等しくないalternate_group(トラックヘッダボックス内)を有する任意のトラックは、alternative_group_idに関連する。"num_tracks_in_alternate_group"は、信号伝達される第i代替トラックグループ内のトラックの数を示す。"alternate_track_id"は、信号伝達される第i代替トラックグループ内の第jトラックのトラックIDを示す。
【０１２０】
"num_switch_groups"は、信号伝達される切り替えトラックグループの数を示す。"switch_group_id"は、信号伝達される第i切り替えトラックグループの識別子を示す。値は0と等しくはない。switch_group_idに関連する任意のトラックに関して、トラック選択ボックスが存在すれば、トラック選択ボックス内で信号伝達されるswitch_groupは、switch_group_idと等しい。トラック選択ボックスが存在する任意のトラックに関して、alternate_groupが0と等しくなければ、トラックは、switch_group_idと関連するものとする。"num_tracks_in_switch_group"は、信号伝達される第i切り替えトラックグループ内のトラックの数を示す。"switch_track_id"は、信号伝達される第i切り替えトラックグループ内の第jトラックのトラックIDを示す。
【０１２１】
"num_layered_groups"は、信号伝達される階層トラックグループの数を示す。"layered_group_id"は、信号伝達される第i階層トラックグループの識別子を示す。
【０１２２】
"num_tracks_in_layered_group"は、信号伝達される第i階層トラックグループ内のトラックの数を示す。"layered_track_id"は、信号伝達される第i階層トラックグループ内の第jトラックのトラックIDを示す。
【０１２３】
"num_dependent_on_tracks"は、第i階層トラックグループ内の第jトラックが直接または間接的に依存するトラックの数を示す。"dependent_on_track_id"は、第i階層トラックグループ内の第jトラックが直接または間接的に依存する第kトラックのトラックIDを示す。
【０１２４】
"num_mdc_groups"は、信号伝達されるMDCトラックグループの数を示す。"mdc_group_id"は、信号伝達される第iMDCトラックグループの識別子を示す。
【０１２５】
"num_tracks_in_mdc_group"は、信号伝達される第iMDCトラックグループ内のトラックの数を示す。"mdc_track_id"は、信号伝達される第iMDCトラックグループ内の第jトラックのトラックIDを示す。
【０１２６】
このトラック関係ボックスの一実施形態では、ファイル配信セッショングループボックス(FDSessionGroupBox)が、ファイル配信セッションの同じグループIDに関連する(例えば、同じウェブページのイメージなどの別々のオブジェクトを形成する)ファイル配信(FLUTE/ALC)ヒントトラックを列挙するために使用される。FDSessionGroupBoxは、次のように定義される。
【０１２７】
ボックスタイプ(Box Types):'segr'
コンテナ(Container): FD情報ボックス(FD Information Box)('fiin')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【０１２８】
FDセッショングループボックスはオプションであるが、2つ以上のFDヒントトラックを含むファイルに関しては必須である。これは、セッションのリスト、ならびに各セッションに属するすべてのファイルグループおよびヒントトラックを含む。FDセッションは、特定のFDセッションに関してFDセッショングループボックス内に列挙されているすべてのFDヒントトラック(チャネル)上で同時に送信する。
【０１２９】
常に1つのみのセッショングループが処理されるべきである。セッショングループ内で最初に列挙されているヒントトラックは、ベースチャネルを指定する。サーバがセッショングループ間にプリファレンスを有しない場合、デフォルトの選択は第1セッショングループであるべきである。ヒントトラックにより参照されるファイルを含むすべてのファイルグループのグループIDが、ファイルグループのリストに含まれるものとする。次に、ファイルグループIDが、サーバによりFDTに含められうるファイルグループ名に変換される(グループID-名前ボックス(group ID to name box)を使用)。
【０１３０】
FDSessionGroupBoxの構文は次の通りである。
aligned(8) class FDSessionGroupBox 
extends Box('segr') {
unsigned int(16)     num_session_groups;
for(i=0; i < num_session_groups; i++) {
unsigned int(8)    entry_count;
for (j=0; j < entry_count; j++) {
unsigned int(32)    group_ID;
}
unsigned int(16) num_channels_in_session_group;
for(k=0; k < num_channels_in_session_group; k++) {
unsigned int(32) hint_track_id;
}
}
}
【０１３１】
"num_session_groups"は、セッショングループの数を指定する。"entry_count"は、セッショングループが適合するすべてのファイルグループを含む、後のリスト内のエントリの数を与える。セッショングループは、各ソースファイルのアイテム情報エントリにより指定される、列挙されるファイルグループ内に含まれるすべてのファイルを含む。なお、セッショングループのFDTは、この構造内で列挙されている当該グループのみを含むべきである。
【０１３２】
"group_ID"は、セッショングループが適合するファイルグループを示す。"num_channels_in_session_groups"は、セッショングループ内のチャネルの数を指定する。num_channels_in_session_groupsの値は、正の整数であるものとする。"hint_track_ID"は、特定のセッショングループに属するFDヒントトラックのトラックIDを指定する。なお、1つのFDヒントトラックは、1つのLCTチャネルに対応する。
【０１３３】
複数のスケーラブルメディアストリームの組み合わせが、制約のある帯域幅を持つチャネル上で配信されるとき、一緒に配信されたメディアすべてからのデータ部の抽出を動的に実行する方法を示す規定を提供する必要がある。したがって、1つ以上のスケーラブルメディアストリームを含むファイルは、レートシェアサンプルグループ記述エントリ(RateShareEntry)により記述される、レートシェアサンプルグループにおけるレートシェア情報も保持するよう修正されてもよい。レートシェア情報の目的は、メディアが任意の時点でどのように各スケーラブルメディアストリームから抽出されるべきかについて、サーバに通知することである。これは、サーバにてメディアをスケーリングする方法を制御または推奨することを可能にし、したがって、エレメンタリメディアストリームの生成を可能にする。
【０１３４】
タイムドレートシェア情報は、メディアの各部分(すなわち時間範囲)と、目標レートシェア値を指定するレートシェア情報レコードとを関連付けることによって、メディアトラック内に格納されているスケーラブルメディアストリームに追加されてもよい。目標レートシェア値は、当該のメディアに配分されるべき使用可能ビットレートの目標割合を示す。もっとも単純なシナリオでは、図6に示されているように、メディアおよび時間範囲ごとに1つのみの目標レートシェア値が規定される。
【０１３５】
なお、使用可能ビットレートによって変化するレートシェア値を調整するために、2つ以上のオペレーション範囲(operation range)を規定することができる。例えば、低い使用可能ビットレートでは、オーディオストリーム部分が、使用可能ビットレートの(ビデオよりも)より高い割合を必要とすることが示されてもよい。これは、図7に示されているように、レートシェアサンプルグループ記述エントリ内で、2つのレートシェアオペレーションポイントを規定することにより行われる。
【０１３６】
図7の各オペレーションポイントが、目標レートシェアを規定する。より複雑な状況に関しては、より多くのオペレーションポイントを指定することもできる。さらに、最初および最後のオペレーションポイントはそれぞれ、当該ポイント、ならびにそのポイントより低い使用可能ビットレートおよびより高い使用可能ビットレートに関して、目標レートシェアを規定する。2つのオペレーションポイント間の目標レートシェアは、当該オペレーションポイントの目標レートシェア間の範囲内となるよう規定される。例えば、線形補間を用いて、2つのオペレーションポイント間の目標レートシェアを推定することができる。
【０１３７】
目標レートシェアは、問題になっているメディアに配分されるべき使用可能ビットレートの目標割合を示す。この配分を所与として、境界を規定するために最大および最小ビットレートが使用される。最大ビットレートは、規定されているメディアおよび時間範囲に関して、使用可能ビットレートの上限を与える。あるいは、これは、配分されるビットレートがメディアに優先される上限閾値を提供するために使用されてもよい。最小ビットレートは、実用的と考えられる下限閾値を示す。例えば、配分されたビットレートが、この最小ビットレート値未満に入る場合、サーバには、メディアにまったくビットレートを配分しないことが推奨される。その結果、ビットレートは、他の(単数または複数)メディアストリームまたは代わりのストリームが使用可能であればそれに与えられてもよい。
【０１３８】
トラック間の目標ビットレートシェアを示すために、レートシェア情報に対しサンプルグループ化メカニズムが使用されてもよい。目標ビットレートへとトラックを間引くアルゴリズムは規定されていない。サンプリンググループ化メカニズムにより定義されているレートシェア情報は、メディアサンプルの期間に適用される。しかし、同じレートシェア情報が、トラックの多数の連続したサンプルに適用されると思われ、おそらく2つまたは3つの異なるレコード間でのみ変化するため、レートシェア情報は、サンプルグループを使用することでトラック内に効率良く格納されてもよい。トラックの各サンプルは、(ゼロまたは)1つのサンプルグループ記述に関連してもよく、そのそれぞれがレートシェア情報のレコードを定義する。
【０１３９】
米国特許出願第11/874,138号は、ファイル内で符号化メディアに関しどの適応オペレーションポイントが使用可能かを示すために、"レートシェアオペレーションボックス"と呼ばれるファイルフォーマット構造を開示している。ISOベースメディアファイルフォーマットにおけるレートシェアサンプルグループ化は、2つの基本的前提に基づいている。
【０１４０】
1.結合されたメディア(例えばオーディオおよびビデオ)が伝達されるべきチャネルの合計のビットレートは、区分的定数時間関数であるべきであると仮定される。しかし、特定のアプリケーションには、特定の合計ビットレートに関して最適なオーディオ・ビデオビットレートシェアを示すよりも、安定したオーディオビジュアル品質またはエクスペリエンスにつながる適応経路(adaptation path)が示された方が有益であろう。例えば、ブロードキャストアプリケーションにおいて統計的多重化が使用される場合、個別のオーディオビジュアルサービスのビットレートは変化することが許され、目標は安定した品質を保持することである。同時に、多重化のすべてのオーディオビジュアルサービス中で合計ビットレートは変化しないままであるべきである。現時点では、安定した品質を保持するためにレートシェア情報を示すことはできない。
【０１４１】
2.トラック間の目標ビットレートシェアのみが与えられるが、示されたシェアを適応によりどのように取得するかのヒントも詳細命令も与えられない。その結果、例えば、フレームレートスケーリングまたは品質スケーリングなど、スケーラブルメディアを適応させる可能性が多数あるため、種々の実装において、適応プロセスの結果が非常に異なるものとなることもある。この事実は、レートシェアサンプルグループ化の価値を下げる。
【０１４２】
上記の問題を解決するために、レートシェアオペレーションボックス(RateShareOperationBox)が提案され、これは、適応オペレーションポイント(adaptation operation point)の特性を含む。適応オペレーションポイントは、レートシェアサンプルグループ記述エントリ内に含まれるレートシェアオペレーションポイントに関連してもよく、これは、他の点では、ISOベースメディアファイルフォーマットと比べて本質的に変化していない。あるいは、適応オペレーションポイントは、新たに提案され種々の適応経路を示す、タイムドメタデータトラック内で信号伝達される、特定の適応経路と関連してもよい。ソリューションを、ヒントトラックおよび将来のスケーラブルメディア符号化フォーマットすべてに適したものとするために、SVCとは独立したメタデータサンプル構造が提案される。各メタデータサンプルは、各関連する適応経路に関して、適応済みサンプルを作成するための詳細命令を与える。この詳細命令は、参照されるサンプルデータのどの部分が、適応済みサンプル内に強制的に存在するか、および細粒度スケーラブル符号化スライスなど、どの部分がスライスヘッダの後任意の長さに自由にトランケートされ得るかを示す。
【０１４３】
適応オペレーションポイントは、1つ以上の符号化メディアビットストリームのどの部分が処理されるかを選択することにより、1つ以上の符号化メディアビットストリームから成る符号化マルチメディアクリップがどのようにスケーリングされるかを規定する。1つ以上の符号化メディアビットストリームの処理は、伝送パケットの構成、伝送、およびスケーリングされたメディアビットストリームの復号のうちの1つ以上を含んでもよい。米国特許出願第11/874,138号は、ファイル内で符号化メディアに関しどの適応オペレーションポイントが使用可能かを示すために、本願明細書で"レートシェアオペレーションボックス"(RateShareOperationBox)と呼ばれるファイルフォーマット構造について記載している。
【０１４４】
さらに、レートシェアオペレーションボックスは、各適応オペレーションポイントに関して、適応が、関連するトラックすべての間でシェアされる所望の合計ビットレートをもたらすかどうか、または適応が、各関連するトラックにおける安定した品質をもたらすかどうかなど、適応結果の識別を含んでもよい。さらに、レートシェアオペレーションボックスは、どのアルゴリズムが各適応オペレーションポイントの生成に使用されたかを示す識別子も含んでもよい。適応オペレーションポイントはさらに、適応オペレーションポイントに関連する各トラック内の適応経路にも対応する。適応オペレーションポイントおよび特定の適応経路は、例えば、適応経路により達成可能な最小および最大ビットレート、ピクチャの空間的適応などの適応に使用される軸、ピクチャの品質適応、ピクチャレート適応、またはその任意の組み合わせに関して、レートシェアオペレーションボックスにおいて識別されてもよい。
【０１４５】
本発明の実施形態が、ISOベースメディアファイルフォーマットで使用される擬似コード記法に従うレートシェアオペレーションボックスの形で以下に提示される。ムービーボックス('moov')は、以下に定義されるように、ゼロまたは1つのレートシェアオペレーションボックス('rsop')を含む。
aligned(8) class RateShareOperationBox
extends FullBox('rsop', version=0, 0) {
unsigned int(16)    operation_point_count;
for (i=1; i <= operation_point_count; i++) {
unsigned int(32)    operation_description;
unsigned int(32)    track_count;
for (j=1; j <= track_count; j++) {
int(32)    track_id;
unsigned int(15)    adaptation_path_id;
unsigned int(1)    reserved;
unsigned int(32)    rate_adaptation_algorithm;
unsigned int(32)    num_constants_in_adaptation_path;
for (k=1; k <= num_constants_in_adaptation_path; k++) 
unsigned int(32)    constant_list;
}
if ((operation_description & 1) == 1) {
unsigned int(32)    minimum_bitrate;
unsigned int(32)    maximum_bitrate;
}
}
}
【０１４６】
レートシェアオペレーションボックス内の構文要素のセマンティクスは以下の通りである。
【０１４７】
operation_point_countは、オペレーションポイントの数を与える整数である。
【０１４８】
operation_descriptionは、このオペレーションポイントのレート適応オペレーションの出力特性を示す。operation_descriptionに関して以下のフラグが規定されている。
【０１４９】
0x1  関連するすべてのトラックの累積出力ビットレートが使用可能ビットレートに固定されている。
【０１５０】
0x2  関連する各トラックの主観的品質が、トラックの期間の初めから終わりまで似た状態が続く。
【０１５１】
track_countは、このオペレーションポイントに関連するトラックの数を示す。track_countが1と等しければ、このオペレーションポイントに関して信号伝達される情報は、特定された単一トラック内に含まれる単一メディアタイプの適応ルールを規定する。track_countが1を超え、示されているトラックすべてが同じメディアタイプを含めば、このオペレーションポイントに関して信号伝達される情報はやはり、特定された複数トラック内に含まれる単一メディアタイプの適応ルールを記述する。
【０１５２】
track_idは、オペレーションポイントに関連するトラックのtrack_IDを示す。
【０１５３】
track_idが、汎用スケーラブルメディアメタデータ(generic scalable media metadata)を含むタイムドメタデータトラックを参照しなければ、adaptation_path_idはゼロであるものとする。そうでなければ、adaptation_path_idが、このオペレーションポイントにおいてどの適応経路が使用されるべきかを示す。
【０１５４】
0と等しいrate_adaptation_algorithmは、いかなる関連するトラックに関しても適応が行われるべきでなく、むしろ、関連するトラックのすべてのサンプルが次のように処理されるべきであることを示す。関連するトラックがヒントトラックであれば、すべてのヒントサンプルに対応するパケットが生成されるべきである。関連するトラックがSVCメディアトラックであれば、潜在的なエクストラクタNALユニットを含め、すべてのサンプルが構文解析されるべきである。その他任意のトラックについては、すべてのサンプルが普通に構文解析されるべきである。この処理の出力は、このボックス内で示されるオペレーションポイントの特性に適合するものとする。1と等しいrate_adaptation_algorithmは、レートシェアサンプルグループ化により示される目標レートシェアを得るために未知の適応アルゴリズムが使用されなくてはならないことを示す。rate_adaptation_algorithmの他の値は、本明細書では規定されないが、参照される汎用スケーラブルメディアメタデータトラックにおいて適応経路を得るために使用されるアルゴリズムを特定する。
【０１５５】
num_constants_in_operation_pointsは、この適応経路において一定のままである特性の数を指定する。
【０１５６】
constant_listは、この適応経路の一定の特性を指定するボックスまたは構造を暗にポイントする4文字コードである。この4文字コードは、SVCのトラック選択ボックスに関して指定されているものを含む。この一定リストは、ファイルを再生する、またはファイル内に含まれたヒントトラックに従い構成されたパケットストリームを受信するデバイスおよび/またはソフトウェアの性能に従って適切なオペレーションポイントを選択することを可能にする。
【０１５７】
minimum_bitrateは、このオペレーションポイントが適用されるべき最低累積ビットレートを示す非ゼロ値(キロビット毎秒)である。
【０１５８】
maximum_bitrateは、このオペレーションポイントが適用されるべき最高累積ビットレートを示す非ゼロ値(キロビット毎秒)である。
【０１５９】
レートシェア情報に関して、トラック間の目標ビットレートシェアを示すためにサンプルグループ化メカニズムが使用されてもよい。目標ビットレートへとトラックを間引くアルゴリズムは規定されていない。適応オペレーションポイントにおけるtrack_idが、汎用スケーラブルメディアメタデータを含むタイムドメタデータトラックでないトラックを参照する場合、トラックは、以下に規定されるタイプ'rash'のサンプルグループ化を含んでもよい。
【０１６０】
ISOベースメディアファイルフォーマットのレートシェアサンプルグループエントリが、以下に定義されるoperation_point_idを用いて拡張される。
class RateShareEntry() extends SampleGroupDescriptionEntry('rash')
{
unsigned int(16)    operation_point_count;
for (i=1; i <= operation_point_count; i++) {
unsigned int(16)    operation_point_id;
unsigned int(16)    target_rate_share;
unsigned int(32)    maximum_bitrate;
unsigned int(32)    minimum_bitrate;
}
}
【０１６１】
operation_point_idは、レートシェアオペレーションポイントボックス内の適応オペレーションポイントのインデックスを示す。operation_point_idの各値は、オペレーションポイントの現在のトラックに関してadaptation_path_idにより特定される1つの適応経路に対応する。
【０１６２】
適応経路は、汎用スケーラブルメディアメタデータトラック(generic scalable media metadata track)と呼ばれるファイルフォーマット構造を用いて信号伝達される。汎用スケーラブルメディアメタデータトラックは、1つの符号化メディアビットストリーム(メディアトラック)、または符号化メディアビットストリームからトランスポートパケットを形成する構造を含むヒントトラックに関連付けられている。換言すれば、汎用スケーラブルメディアメタデータトラックは、参照されるトラックを所望のビットレートまたは品質に間引くために利用されうる"詳細"命令を含む。汎用スケーラブルメディアメタデータトラックの復号は、適応済みサンプルをもたらす。汎用スケーラブルメディアメタデータトラックから参照されるトラックがヒントトラックであれば、適応済みサンプルは有効なパケットペイロードである。参照されるトラックがメディアトラックであれば、適応済みサンプルは、ビデオの符号化ピクチャもしくはアクセスユニット、または符号化オーディオフレームなどの有効なメディアサンプルである。
【０１６３】
汎用スケーラブルメディアメタデータトラックの実施形態が、以下に提供される。汎用スケーラブルメディアメタデータトラックは、タイムドメタデータトラックであり、メディアボックス内の'meta'handler_typeを用いて特定される。タイムドメタデータトラックは、メディア情報ボックス内に汎用スケーラブルメディアメタデータヘッダボックス(GenericScalableMediaMetadataHeaderBox)を含むことにより、汎用スケーラブルメディアメタデータトラックであるとさらに識別される。汎用スケーラブルメディアメタデータヘッダボックスは、以下に規定されるように、トラックに関係する一般情報を含む。
aligned(8) class GenericScalableMediaMetadataHeaderBox
extends FullBox('gshd', version = 0, 1) {
unsigned int(15) num_adaptation_paths;
unsigned int(1) reserved;
for (i=1; i<=num_adaptation_paths; i++) {
unsigned int(15) adaptation_path_id;
unsigned int(1)  truncation_flag;
}
}
【０１６４】
num_adaptation_pathsは、トラックがいくつの適応経路を提供するかを示す。
【０１６５】
adaptation_path_idは、レートシェアオペレーションボックス内で識別された適応経路を指し、適応経路を特定する。
【０１６６】
1と等しいtruncation_flagは、いくつかのサンプル内の、この適応経路識別子を用いてラベル付けされているいくつかの部分がトランケートされてよいことを示す。0と等しいtruncation_flagは、任意のサンプル内の、この適応経路識別子を用いてラベル付けされている部分がトランケートされてはならないことを示す。
【０１６７】
汎用スケーラブルメディアメタデータトラックのサンプルエントリは、次のように規定される。
class GenericScalableMediaMetadataSampleEntry() extends MetadataSampleEntry('gsmm') {
unsigned int(2) log2_num_parts_minus_one;
unsigned int(2) log2_num_paths_minus_one;
unsigned int(2) log2_offset_minus_one;
unsigned int(2) log2_size_minus_one;
}
【０１６８】
サンプルエントリのフィールドは、トラックのサンプル構造を使用した構文要素のサイズ(フィールドの値0、1、2および3にそれぞれ対応する8、16、24、または32ビット)を指定するために使用される。
【０１６９】
汎用スケーラブルメディアメタデータトラック内のサンプルは、次の構造を使用する。
aligned(8) generic_scalable_media_metadata_sample(sampleSize) {
unsigned int((log2_num_parts_minus_one+1)*8) num_parts;
for (i=1; i<= num_parts; i++) {
unsigned int((log2_num_paths_minus_one+1)*8-1) num_paths_whole_part;
unsigned int(1) truncatable_part_flag;
for(j=1; j <= num_paths_whole_part; j++) {
unsigned int(15) path_id_whole_part;
unsigned int(1) reserved;
}
if (num_paths_whole_part > 0) {
unsigned int((log2_offset_minus_one+1)*8) offset_whole_part;
unsigned int((log2_size_minus_one+1)*8) num_bytes_whole_part;
}
if (truncatable_part_flag == 1) {
unsigned int((log2_num_paths_minus_one+1)*8-1) num_partitionigs;
unsigned int(1) reserved;
for (k=1; k <= num_partitionings; k++) {
unsigned int((log2_num_paths_minus_one+1)*8-1) num_paths;
unsigned int(1) reserved;
for (m=1; m <= num_paths; m++) {
unsigned int(15) path_id;
unsigned int(1) reserved;
}
unsigned int(8) num_subparts;
for (m=1; m <= num_subparts; m++){
unsigned int((log2_offset_minus_one+1)*8) offset;
unsigned int((log2_size_minus_one+1)*8) num_bytes;
unsigned int(7) reserved;
unsigned int(1) free_truncation_flag;
}
}
}
}
}
【０１７０】
汎用スケーラブルメディアサンプルエントリは、log2_num_parts_minus_one、log2_num_paths_minus_one、log2_path_id_minus_one、log2_offset_minus_one、およびlog2_size_minus_oneの値を含む。
【０１７１】
メタデータサンプルは、(復号時間内に)参照されるメディアまたはヒントトラック内のサンプルに、時間合わせ（アラインメント）される。各メタデータサンプル(適応サンプルとも呼ばれる)は、以下のように初期の適応済みサンプルから得られる、対応する適応済みサンプルと関連する。
【０１７２】
初期の適応済みサンプルは、符号化メディアサンプルまたは適応サンプルに関連するヒントサンプルから得てもよい。関連するトラックがメディアトラックである場合、初期の適応済みサンプルは、関連するメディアサンプルから得られる。メディアサンプルが、SVCファイルフォーマットにおいて規定されているアグリゲータまたはエクストラクタNALユニットを含まなければ、初期の適応済みメディアサンプルはメディアサンプルと同一である。そうでなければ、エクストラクタNALユニットにより参照されるデータが、エクストラクタNALユニットの代わりに初期の適応済みサンプルに挿入され、アグリゲータNALユニットのヘッダは除去され、初期の適応済みメディアサンプルの任意の残りの部分はメディアサンプルのデータをそのまま含む。関連するトラックがヒントトラックである場合、初期の適応済みサンプルは、関連するヒントサンプルから得られる。初期の適応済みサンプルは、サンプルのペイロードコンストラクタを使用して生成されるパケットペイロードと同一である。
【０１７３】
適応サンプルは各適応経路に関して情報を含み、初期の適応済みサンプルの各部分は適応済みサンプルに含まれる。各部分の指示は、初期の適応済みサンプル内のバイト範囲のリストを用いて示されてもよい。バイト範囲の使用は、ソリューションが、メディアサンプルまたはパケットペイロードの構文を認識しないようにし、したがって、任意の符号化またはパケットペイロードフォーマットに適用できるようにする。適応サンプルはさらに、バイト範囲が、示された範囲の始まりから開始する任意の長さに自由にトランケートされてよければ、示された各バイト範囲ごとに標示を含んでもよい。
【０１７４】
汎用スケーラブルメディアメタデータの提示されるサンプル構造は、初期の適応済みサンプルの示されるバイト範囲を、適応済みサンプルにマップする。異なる適応経路に関して、異なるバイト範囲が示されてもよい。さらに、特定のバイト範囲が、自由にトランケート可能であるかどうか、すなわち、バイト範囲の始まりから開始してそこから任意の数のバイトが適応済みサンプル内に含まれてよいかどうかが示されてもよい。
【０１７５】
汎用スケーラブルメディアメタデータトラックのサンプル構造のセマンティクスは次の通りである。
【０１７６】
num_partsは、初期の適応済みサンプル内の部分の数を示す。部分の厳密な定義は与えられていないが、典型的には、スケーラブルビデオ内の符号化ピクチャなど、予測参照のユニットに対応する初期の適応済みサンプル内のバイト範囲である。
【０１７７】
num_paths_whole_partは、部分全体が含まれる適応経路の数を示す。
【０１７８】
0と等しいtruncatable_part_flagは、その部分がトランケートされてはならないということを示す。1と等しいtruncatable_part_flagは、その部分の少なくとも1つのサブ部分がトランケートされてよいということを示す。
【０１７９】
path_id_whole_partは、レートシェアオペレーションボックス内に取り入れられる、その部分の適応経路識別子を示す。
【０１８０】
offset_whole_partは、その部分が開始する初期の適応済みサンプルに対するバイトオフセットを示す。初期の適応済みサンプルの第1バイトオフセットは値0を有する。
【０１８１】
num_bytes_whole_partは、その部分に含まれるバイトの数を示す。
【０１８２】
num_partitioningsは、部分がサブ部分に分割されるパーティショニングの数を示す。部分をサブ部分に分ける特有方法それぞれがパーティショニングである。例えば、部分が細粒度スケーラブルピクチャに対応し、2つの適応経路が指定されており、それぞれピクチャの合計サイズの50〜100%および80〜100%の範囲でのビットレートスケーリングが可能である場合、その部分には2つのパーティショニングがあることになる。第1のパーティショニングでは、ピクチャのサイズの50%のバイト範囲に対応するサブ部分が、0と等しいfree_truncation_flagを用いて示されることになり、ピクチャの残りのサブ部分が、1と等しいfree_truncation_flagを用いてマークを付けられることになる。第2のパーティショニングのサブ部分も同様に示されることになる。
【０１８３】
num_pathsは、部分のサブ部分への同じパーティショニングをシェアする適応経路の数を示す。
【０１８４】
path_idは、レートシェアオペレーションボックス内に取り入れられる、パーティショニングに関して指定されるサブ部分の適応経路識別子を示す。
【０１８５】
num_subpartsは、サブ部分の数を示す。サブ部分の精密な定義は与えられていないが、例えば細粒度スケーラブル符号化スライスのスライスヘッダおよびスライスデータに対応する部分内のバイト範囲である。
【０１８６】
offsetは、サブ部分が開始する、初期の適応済みサンプルに対するバイトオフセットを示す。初期の適応済みサンプルの第1バイトオフセットは値0を有する。
【０１８７】
num_bytesは、サブ部分に含まれるバイトの数を示す。
【０１８８】
0と等しいfree_truncation_flagは、そのサブ部分がトランケートされてはならないということを示す。1と等しいfree_truncation_flagは、そのサブ部分が、サブ部分の終わりから開始して、サンプルを除外することによって任意の長さにトランケートされてよいということを示す。
【０１８９】
適応済みサンプルは、次のように作成される。currPathIdが、所望の適応経路の識別子と等しいとする。レートシェアリング情報サンプルグループにより示される、所望の適応経路に関するデータを含むサンプルに対し、次のプロセスが実行される。示される部分それぞれに関して、最初に、path_id_whole_partのリストがcurrPartIdと比較される。currPartIdと等しいpath_id_whole_partの値があれば、その結果、offset_whole_partおよびnum_bytes_whole_partの値により示される部分全体が、適応済みサンプルに含まれる。currPartIdと等しいpath_id_whole_partの値がなく、truncatable_part_flagが1と等しければ、サブ部分への指示されたパーティショニングのループが、currPathIdと等しいpath_idの値が見つかるまで実行される。その結果、オフセットおよびnum_bytesの値により示される各サブ部分が、適応済みサンプル内に含まれる。例えば、適応済みサンプルのさらなるトランケートが、特定のビット割り当て量に対応するために必要であれば、free_truncation_flagが1と等しい当該サブ部分が、所望の長さにトランケートされる。
【０１９０】
複数の適応済みサンプルが、適応済みトラックを形成する。参照されているトラックがヒントトラックであれば、適応済みサンプルは有効なパケットペイロードである。参照されているトラックがメディアトラックであれば、適応済みサンプルは有効なメディアサンプルである。
【０１９１】
なお、ビデオ符号化における符号化サンプルは、典型的には符号化ピクチャまたはアクセスユニットである。オーディオにおける符号化サンプルは、典型的には符号化オーディオフレームである。さらに、上記のように、simple_priority_id閾値が、符号化ビデオシーケンスの途中(すなわちIDRアクセスユニット間)で変更されると、ストリームの妥当性についての保証は与えられない。本発明で提案される適応経路についても同じことが言える。適応経路間の有効な切り替えポイントを示すために、適応経路切り替えポイントに関してサンプルグループ化メカニズムが、1つの適応経路から別の適応経路に切り替えるために使用され得る適応済みサンプルを示すよう使用される。このサンプルグループ化メカニズムの必要性は、SVCがシングルループ復号を利用ということ、すなわち、参照ピクチャが最上位復号レイヤに関してのみ復号されるということから生じる。その結果、一部の位置では、切り替えられるレイヤの参照ピクチャが復号されていないため、レイヤ間の切り替えを任意の位置とすることは不可能である。したがって、このサンプルグループ化メカニズムは、レイヤ切り替えポイント、またはより広く、適応経路間の切り替えポイントを示すために使用されてもよい。
【０１９２】
適応経路切り替えサンプルグループ記述が存在する場合、トラックの各サンプルが、以下に規定される1つの適応経路切り替えポイントエントリにマップされる。グループ化タイプ'tpsw'に関して、ゼロまたは1つのサンプル-グループボックス('sbgp')が、汎用スケーラブルメディアメタデータトラックのサンプルテーブルボックス('stbl')内に含まれていてもよい。適応経路切り替えポイント(adaptation path switch point)サンプルグループエントリが、次に定義される。
class AdaptationPathSwithPointEntry() extends SampleGroupDescriptionEntry('tpsw')
{
unsigned int(8) num_refresh;
for (i=1; i<=num_refresh; i++) {
unsigned int(15) refresh_adaptation_path_id;
unsigned int(1) reserved;
}
}
【０１９３】
適応経路切り替えポイントサンプルグループエントリのセマンティクスは次の通りである。
【０１９４】
num_refreshは、任意の適応経路が適応済みサンプルの生成において以前に使用されている場合に、このサンプルにおいて切り替えられてもよい適応経路の数を示す。
【０１９５】
refresh_adaptation_path_idは、任意の適応経路が適応済みサンプルの生成において以前に使用されている場合に、切り替えられてもよい当該適応経路の識別子を示す。
【０１９６】
レートシェアオペレーションボックスを備えるファイルを処理するデバイス、ソフトウェアプログラム、コンポーネント、またはその他任意の適切なユニットが、所望の適応オペレーションポイントを選んでもよい。この選択は、デバイスおよび受信候補ユニットの制約および能力が、適応オペレーションポイントの特性、または適応オペレーションポイントが計算された所望のアルゴリズムとどうマッチするかに基づく。
【０１９７】
適応オペレーションポイントを選ぶ例示システムについて、以下の通り記載する。ストリーミングサーバは、レートシェアオペレーションボックスを含むファイルにアクセスできる。このファイルは非スケーラブルオーディオビットストリームおよびスケーラブルビデオビットストリームを含み、スケーラブルビデオビットストリームは、品質ならびに時間的にスケーラブルである。レートシェアオペレーションボックス内に2つの適応オペレーションポイントが示されており、両方が、オーディオとビデオとの間の合計ビットレートのシェアを目的としている。各適応オペレーションポイントは、ヒントトラックのペア、オーディオのヒントトラック、およびビデオの別のヒントトラックを参照する。レートシェアオペレーションボックスは、第1適応オペレーションポイントにおいてビデオが時間的にスケーリングされ、その一方で、品質的なスケーリングが第2適応オペレーションポイントにおいて使用されることを示す。受信側とサーバとの間で、1対1(すなわちユニキャスト)ストリーミングセッションが確立される。サーバから受信側へ、時間的および品質的オプションの両方が通知される。受信側ユニットは、フレームレート(時間的スケーリング)が好まれるか、またはピクチャ忠実度(品質スケーリング)が好まれるか、ユーザの好み（プリファレンス）を選ぶためのユーザインターフェーススイッチを含んでもよい。ユーザの選択に基づき、受信側ユニットは、どの適応経路に従うべきかをサーバに示す。サーバは続いて、適切なヒントトラックおよびユーザにより示された適応経路に基づき、パケットを作成する。
【０１９８】
したがって、図8は、メディアデータのトラックへの編成、トラックサブセットの特定、トラックおよびトラックサブセットの特性の付与、特定されたグループ化基準に従った、トラックのマルチトラックグループへの編成を可能にする、トラックを処理する上記技術の簡潔な摘要を示す。
【０１９９】
タイムドメディアデータ(ならびにタイムドメタデータ)は、論理的にトラックに編成されている。各トラックは、復号および提示されうるメディアコンテンツの表現を提供する。トラックに関して、様々なタイプのメタデータが、トラックヘッダボックスおよびそのシブリング(siblings)内に提供される。トラック選択ボックスは、トラックのコンテンツを記述する属性、または同じ代替グループ内の他のトラックからトラックのコンテンツを識別する属性を提供する(下記参照)。トラック内のサンプルは、提供されるサンプルエントリにより記述される。
【０２００】
トラックのサブセットが提供されてもよい。トラックサブセットは、トラック全体のメディアデータのサブセットを特定し、それに関連付けられる。トラックサブセットは、通常は復号および提示可能なメディアコンテンツの表現を提供する。
【０２０１】
上述の通り、ISOベースメディアファイルフォーマット、および例えばSVCファイルフォーマットなどのその修正は、階層的に編成されたビットストリームサブセットの特性を示すことをサポートする。例えば、スケーラブルビデオ(SVC)ビットストリームのサブセットの特性が、層(本質的にスケーラブルレイヤに類似)またはトラック全体(スケーラブルレイヤに対応)に関して示されてもよい。しかし、ISOベースメディアファイルフォーマットは、種々の階層パーティショニングおよびオーバーラップするビットストリームサブセット(タマネギ状構造を有しない)を示すことをサポートしていない。マルチビュービデオ符号化は、出力用のビューの選択に柔軟性があるため、両タイプの標示を必要とする。
【０２０２】
各トラックが、トラック参照により相互に関連付けられ、トラックまたはトラックサブセット(例えばSVCの層)の特性が示されることはできるが、ISOベースメディアファイルフォーマットにもそれから派生したものにも、トラックまたはトラックサブセットのグループの特性を示すメカニズムはない。当該の特性とは、例えば、必要なプロファイル、レベル、復号器バッファリングパラメータであってもよい。
【０２０３】
ISOベースメディアファイルフォーマットは、トラックまたはトラックサブセットのグループの、トラックまたはトラックサブセットの別のグループとの関係(共通要素および相違する要素)を示すメカニズムを欠く。そのようなメカニズムは、他の似たグループを無視しながら、処理するトラックまたはトラックサブセットのグループを選択するのに役立つであろう。トラックまたはトラックサブセットのグループは、例えば、マルチビュービデオストリームの所望の出力ビューを示すために必要であると思われる。
【０２０４】
マルチビュービデオビットストリームは、1つのトラックごとに1つのビューを格納することから、単一トラックですべてのビューを格納することまで、様々な方法でコンテナファイルに格納され得る。ISOベースメディアファイルフォーマットのファイルフォーマット群には、トラックの或るサブセットの、(おそらく他の)トラックの別のサブセットとの関係を示すメカニズムがない。
【０２０５】
本発明の実施形態に基づき、マルチトラックグループをマルチトラックグループのセットにグループ化するメカニズムが提供される。本発明の実施形態は、マルチトラックグループのセットの共有特性およびグループ化基準を示し、マルチトラックグループの各セット間の関係を示す。本発明の例示実施形態は、図9に概略的に示されている。
【０２０６】
本発明の実施形態に基づき、マルチトラックグループの、マルチトラックグループのセットへのグループ化が提供されてもよい。さらに、マルチトラックグループのセットに関して、共有特性およびグループ化基準を示すことが可能になってもよい。マルチトラックグループの各セット間の関係が示され、マルチトラックグループがトラックサブセットに基づいて形成されてもよい。
【０２０７】
なお、図9内の値K、L、MおよびNは、任意の正の整数値であり互いに独立であってもよい。図9内の"#"は、個別のファイルフォーマット構造の識別子の数を表す。
【０２０８】
以下、図10を参照する。フローチャートは、マルチメディアデータを編成する例示プロセスを示す。本発明の実施形態に基づき、示されているプロセス400は、リアルタイムマルチメディアデータを複数のトラックおよび/またはトラックサブセット内に格納する(ブロック402)。トラックおよび/またはトラックサブセットは、図9内で参照番号302により示されている。再び図10を参照する。トラックおよび/またはトラックサブセットのマルチトラックグループ1つ以上が、トラックおよび/またはトラックサブセット間の関係性に基づき特定される(ブロック404)。図9に示されている実施形態では、グループが参照番号304により示されている。グループの特定は、例えば、グループに関係する情報を格納または伝送することを含んでもよい。本発明の特定の実施形態では、プロセス400はさらに、マルチトラックグループのセットを少なくとも1つ形成することをさらに含んでもよい(ブロック406)。マルチトラックグループのセットは、マルチトラックグループの特性1つ以上としてもよい。図9では、マルチトラックグループのセットが参照番号306により示されている。
【０２０９】
本発明の実施形態は、マルチビュービデオおよびマルチビューオーディオを扱う。特に、同じコンテンツの複数のビューが、マルチトラックグループのグループ化基準であってもよい。マルチビュービデオまたはマルチビューオーディオに関して指定される、マルチトラックグループの特性が示されてもよい。さらに、本発明の実施形態は、マルチビューメディアレンダリング、符号化、またはキャプチャリングの観点から類似する特性を有するマルチトラックグループのセットへの、2つ以上のマルチトラックグループのグループ化を提供してもよい。マルチトラックグループのセットの共有マルチビュー特性、およびマルチトラックグループのセット間のマルチビュー関係が示されてもよい。
【０２１０】
本発明の実施形態の例示実装が、ISOベースメディアファイルフォーマットに関連する構文およびセマンティクスの観点から以下に記載される。さらに、MVCのマルチトラックグループボックスが得られる。
【０２１１】
本発明の実施形態に基づき、トラックまたはトラックサブセットをグループ化してそれらの間の関係を示すために使用される、抽象マルチトラックグループボックスが提供される。グループ化基準は、マルチトラックグループボックスから継承されるボックスの4文字コードにより示される。一実施形態では、マルチビュービデオの1つのグループ化基準が記述されるが、例えば多重記述符号化に関してなど、他のものも設計されてもよい。4文字コード"mvcg"が、マルチビュービデオのマルチトラックグループに使用される。その中の列挙されるトラックまたはトラックサブセットは、意図される出力ビューを示す。トラックサブセットは、例えば、サンプルグループ化メカニズムにより定義される層であってもよい。
【０２１２】
本発明の実施形態に基づき、マルチトラックグループ関係ボックスが、示されるマルチトラックグループ間の関係を示すために使用される。マルチトラックグループの特定のセットを列挙する主要な基準は、マルチトラックグループ関係ボックスから継承されるボックスの4文字コードにより示される。本発明の実施形態に基づき、1つの基準は、切り替え('swtc')であるとよく、これは、示されているマルチトラックグループのうち1つのみが一度に処理される(再生または伝送される)べきであり、必要に応じてマルチトラックグループ間の切り替えが任意の時点に許可されるということを示す。他の基準も実装されてもよい。
【０２１３】
マルチトラックグループ内のトラックまたはトラックサブセットの関係、ならびに得られたマルチトラックグループ関係ボックスを備えるマルチトラックグループ間の関係は、関係属性ボックス("ratr")により示される。一実施形態では、ポイントされるユニットすべてに共通するものと、ポイントされる各ユニットを識別するものとの2タイプの関係がある。
【０２１４】
マルチトラックグループ化情報の直接的な構文解析を可能にするために、マルチトラックグループボックスおよびマルチトラックグループ関係ボックスすべてが、ムービーボックス("moov")に含まれる1つのマルチトラックグループコンテナボックス("mtgc")内に含まれてもよい。
【０２１５】
以下、図11を参照する。部分的に異なる複数のトラックを参照する、マルチビュービデオの2つのマルチトラックグループボックスを備えるファイルの単純化した例が示されている。この例では、1つのトラックがマルチビュービットストリームの1つのビューに対し形成される。切り替えマルチトラックグループ関係ボックスは、2つのマルチトラックグループにより形成されるマルチビューストリーム間の類似点と相違点とを示すよう含まれる。図11内の破線矢印は、参照を示す。
【０２１６】
関係属性ボックス(RelationAttributeBox)は次のように定義される。
【０２１７】
ボックスタイプ(Box Types):'ratr'
コンテナ(Container): マルチトラックグループボックスまたはマルチトラックグループ関係ボックスから得られるボックス
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【０２１８】
関係属性ボックスは、マルチトラックグループボックス内に含まれる場合、個別のマルチトラックグループのトラックまたはトラックサブセットの相互関係を示す。関係属性ボックスは、マルチトラックグループ関係ボックス内に含まれる場合、マルチトラックグループの相互関係を示す。関係属性ボックスのセマンティクスに関して、ユニットは、関係属性ボックスがマルチトラックグループボックス内に含まれているときには、トラックまたはトラックサブセットと規定され、関係属性ボックスがマルチトラックグループ関係ボックスに含まれているときには、マルチトラックグループと規定される。
【０２１９】
関係属性ボックスにおける構文および構文要素のセマンティクスは次の通りである。
aligned(8) class RelationAttributeBox
extends FullBox('ratr', version = 0, flags) {
unsigned int(16) reserved;
unsigned int(16) num_common_attributes;
for (i=0; i<num_common_attributes; i++)
unsigned int(32) common_attribute;
unsigned int(16) reserved;
unsigned int(16) num_differentiating_attributes;
for (i=0; i<num_differentiating_attributes; i++)
unsigned int(32) diffentiating_attribute;
}
【０２２０】
common_attributeおよびdifferentiating_attributeは、下のリストから選択される。識別属性として使用されうる属性は、識別フィールドまたは情報へのポインタと関連付けられる。
【０２２１】
【表２】
0005462259.tif 000003
【０２２２】
すべてのユニットが同じ共通属性を共有するか、または共通属性が合同ですべてのユニットを識別する。識別属性は、少なくとも1つのユニットが、この属性に基づき他のものとは異なることを示す。識別属性のポインタは、1つのユニットを、同じ属性を備える他のユニットと識別する情報の位置を示す。
【０２２３】
マルチトラックグループコンテナボックス(MultiTrackGroupContainerBox)は、次の通り定義される。
【０２２４】
ボックスタイプ(Box Types):'mtgc'
コンテナ(Container): ムービーボックス('moov')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【０２２５】
このボックスは、分類されたマルチトラックグループボックスを含む。マルチトラックグループコンテナボックスの構文および構文要素のセマンティクスは次の通りである。
aligned(8) class MultiTrackGroupContainerBox
extends FullBox('mtgc', version = 0, flags) {
}
【０２２６】
マルチトラックグループボックス(MultiTrackGroupBox)は、次の通り定義される。
【０２２７】
ボックスタイプ(Box Types):各マルチトラックグループ化タイプに関して登録される
コンテナ(Container): マルチトラックグループコンテナボックス('mtgc')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロ以上
【０２２８】
マルチトラックグループボックスの構文および構文要素のセマンティクスは次の通りである。
aligned(8) class MultiTrackGroupBox (unsigned int(32) multi_track_group_type) extends FullBox(multi_track_group_type, version = 0, flags) {
unsigned int(32) multi_track_group_id;
unsigned int(16) num_entries;
for(i=0; i<num_entries; i++) {
unsigned int(8) entry_type;
if (entry_type == 0)
unsigned int(32) track_id;
else if (entry_type == 1) {
unsigned int(32) track_id;
unsigned int(16) tier_id;
}
else if (entry_type == 2) {
unsigned int(32) track_id;
unsigned int(32) grouping_type;
unsigned int(8) grouping_flags;
if (grouping_flags & 1)
unsigned int(32) grouping_type_parameter;
unsigned int(32) num_group_description_indexes;
for (j=0; j<num_group_description_indexes; j++)
unsigned int(32) group_description_index;
}
else if (entry_type == 3) {
unsigned int(32) track_id;
unsigned int(8) priority_layer;
}
else if (entry_type == 4) {
unsigned int(32) track_id;
unsigned int(8) priority_assignment_method_index;
unsigned int(2) reserved;
unsigned int(6) max_priority_id;
}
else if (entry_type == 5) {
unsigned int(32) track_id;
unsigned int(32) num_subsample_entries;
for (j=0; j<num_subsample_entries; j++) {
unsigned int(8) min_subsample_priority;
unsigned int(8) max_subsample_priority;
unsigned int(8) discardable_required;
unsigned int(32) mask_one_bit_required;
unsigned int(32) mask_zero_bit_required;
}
}
else if (entry_type == 6) {
unsigned int(32) track_id;
unsigned int(16) max_degradation_priority;
}
else if (entry_type == 7) {
unsigned int(32) track_id;
unsigned int(15) adaptation_path_id;
unsigned int(1) reserved;
}
}
RelationAttributeBox relation_attribute_box;
}
【０２２９】
multi_track_group_idは、ファイル内のマルチトラックグループの固有識別子を提供する。relation_attribute_boxは、示されているトラックまたはトラックサブセット間の関係を含む。num_entriesは、このマルチトラックグループ内に含まれているトラックおよびトラックサブセットの数である。
【０２３０】
entry_typeは、どのタイプのトラックまたはトラックサブセットが続くかを示す。entry_typeの次の値が規定される。
0-トラック全体
1-トラック内の層
2-特定のサンプルグループ化の特定のグループに関連するサンプル
3-SVCの優先レイヤ
4-特定のpriority_id範囲のSVC/MVCビットストリームサブセット
5-すべてのサンプルの特定のサブサンプルのみを含むストリーム
6-特定の劣化優先範囲内のサンプルのみを含むストリーム
7-特定の適応経路のみを含むストリーム
【０２３１】
track_idは、トラックを示す。tier_idは、トラック(SVCまたはMVCの)内の層を示す。
【０２３２】
grouping_typeは、どのサンプルグループ記述ボックスおよびサンプル-グループボックスが関連しているかを示す。
【０２３３】
grouping_flagsの最下位ビットは、ISOベースメディアファイルフォーマット第3版の修正案1(MPEG文書N9826)において規定されているgrouping_type_parameterであれば、セットされるべきである。grouping_type_parameterは、どのグループ記述ボックスおよびサンプル-グループボックスが関連しているかを示すためにさらに使用される。
【０２３４】
group_description_indexは、トラックサブセットを形成する、関連するサンプル-グループボックス(単数または複数)内の当該サンプルのインデックスを示す。
【０２３５】
priority_layerは、トラックサブセットの形成にどのpriority_layerが使用されるかを示す。優先レイヤが参照されるとき、track_idは、適切な優先レイヤステートメントを含むSVCのタイムドメタデータトラックをポイントするものとする。
【０２３６】
num_subsample_entriesは、どのサブサンプルがトラックサブセット内に含まれるかを定義するエントリの数を示す。min_subsample_priorityおよびmax_subsample_priorityは、トラックサブセット内に含まれるサブサンプル優先範囲を示す。
【０２３７】
0と等しいdiscardable_requiredは、0と等しい破棄可能フィールドを有するサンプルがトラックサブセットに含まれていないことを示す。1と等しいdiscardable_requiredは、1と等しい破棄可能フィールドを有するサンプルがトラックサブセットに含まれていないことを示す。2と等しいdiscardable_requiredは、トラックサブセットのサンプルを選択するときに破棄可能フィールドが無視されることを示す。
【０２３８】
mask_one_bit_requiredは、サブサンプル情報ボックスの保留されているフィールドのマスクを提供する。(mask_one_bit_required & reserved)==mask_one_bit_required(&はビット単位論理積)であれば、対応するサブサンプルは、(その他の基準もすべて満たされているならば)トラックサブセットに含まれる。
【０２３９】
mask_zero_bit_requiredは、サブサンプル情報ボックスの保留されているフィールドのマスクを提供する。(mask_zero_bit_required & reserved)==0であれば、対応するサブサンプルは、(その他の基準もすべて満たされているならば)トラックサブセットに含まれる。
【０２４０】
entry_typeが6である場合、0からmax_degradation_priorityの範囲にある劣化優先を備えるサンプルが、トラックサブセットに含まれる。(これは、劣化優先0が、もっとも重要なデータにマークを付け、劣化優先が増えると重要度が下がると仮定したものである。)
【０２４１】
adaptation_path_idは、どの適応経路がトラックサブセットを提供するかを示す。
【０２４２】
マルチビュービデオ(MultiviewVideo)のマルチトラックグループボックス(MultiTrackGroupBox)は、次の通り定義される。
【０２４３】
ボックスタイプ(Box Types):'mvcg'
コンテナ(Container): マルチトラックグループコンテナボックス('mtgc')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロ以上
【０２４４】
このボックスは、出力されるマルチビュービデオストリームのビューのマルチトラックグループを規定する。ボックスに含まれる各トラックまたはトラックサブセットは、出力されることを目的としている。トラックまたはトラックサブセットが複数のビューを含む場合、含まれているビューすべてが出力対象である。
【０２４５】
出力ビューの復号は、出力対象でない他のビューの復号を必要とすることもある。復号に必要であるが出力対象ではないビューは、'mvpr'トラック参照から、およびコンテンツ層依存関係ボックス(Tier Dependency box)から得られてもよい。
【０２４６】
マルチビュービデオのマルチトラックグループボックスの構文および構文要素のセマンティクスは次の通りである。
aligned(8) class MultiviewVideoMultiTrackGroupBox () extends MultiTrackGroupBox('mvcg', version = 0, flags) {
TierInfoBox subset_stream_info; // mandatory
TierBitRateBox subset_stream_bit_rate; // optional
BufferingBox subset_stream_buffering; // optional
InitialParameterSetBox subset_stream_initial_parameter_sets; // optional
MultiviewSceneInfoBox multiview_scene_info; // optional
}
【０２４７】
なお、層情報ボックス(TierInfoBox)、層ビットレートボックス(TierBitRateBox)、およびバッファリングボックス(BufferingBox)の存在は、前に示された層情報ボックス、層ビットレートボックス、およびバッファリングボックスの定義において言及された許可されている当該コンテナボックスに加え、マルチビュービデオのマルチトラックグループボックス内にも許可されなければならない。
【０２４８】
マルチトラックグループボックス内に含まれるrelation_attribute_boxは、出力ビュー間の関係を示す。'ecam'が共通属性として使用される場合、すべての出力ビューは、同一の回転および一定な直列間隔の外部カメラパラメータに関連する。'ecam'が識別属性として使用される場合、1つの出力ビューが、他とは異なる回転の外部カメラパラメータに関連するか、または複数の出力ビューが、一定な直列間隔を有しない外部カメラパラメータに関連する。
【０２４９】
subset_stream_infoは、示されている出力ビューおよびそれが依存するビューを含むビットストリームサブセットの特性を示す。
【０２５０】
subset_stream_bit_rateは、示されている出力ビューおよびそれが依存するビューを含むビットストリームサブセットのビットレート統計を示す。TierBitRateBox内のtierBaseBitRate、tierMaxBitRate、およびtierAvgBitRateの値は規定されない。
【０２５１】
subset_stream_bufferingは、示されている出力ビューおよびそれらが依存するビューを含むビットストリームサブセットに適用される仮想参照復号器(HRD:Hypothetical Reference Decoder)パラメータを示す。
【０２５２】
subset_stream_initial_parameter_setsは、示されている出力ビューおよびそれらが依存するビューを含むビットストリームサブセットの復号に必要なパラメータセットを含む。
【０２５３】
multiview_scene_infoは、任意のアクセスユニット内の空間的に隣接した任意の出力ビュー間の、整数ピクセル解像度を単位とした最大差異を含む。
【０２５４】
マルチトラックグループ関係ボックス(MultiTrackGroupRelationBox)は、次の通り定義される。
【０２５５】
ボックスタイプ(Box Types):各マルチトラック関係タイプに関して登録される
コンテナ(Container): マルチトラックグループコンテナボックス('mtgc')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロ以上
【０２５６】
この抽象ボックス(abstract box)は、マルチトラックグループおよびその相互関係を示すメカニズムを提供する。得られたボックスのボックスタイプは、示されるマルチトラックグループを一緒にグループ化する基準を示す。マルチトラックグループ関係ボックスにおける構文および構文要素のセマンティクスは次の通りである:
aligned(8) class MultiTrackGroupRelationBox () extends FullBox(multi_track_group_relation_type, version = 0, flags) {
unsigned int(32) num_entries;
for (i=0; i<num_entries; i++)
unsigned int(32) multi_track_group_id;
RelationAttributesBox relation_attributes;
}
【０２５７】
num_entriesは、関連するマルチトラックグループの数を示す。multi_track_group_idは、関連するマルチトラックグループの識別子である。relation_attributesは、関連するマルチトラックグループ間の関係を示す。
【０２５８】
切り替えマルチトラックグループ関係ボックス(Switch Multi-Track Group Relation Box)は、次の通り定義される。
【０２５９】
ボックスタイプ(Box Types):swtc
コンテナ(Container): マルチトラックグループコンテナボックス('mtgc')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロ以上
【０２６０】
このボックスは、1つのマルチトラックグループが任意の時点で復号および再生される、マルチトラックグループのセットを規定する。所与の関係属性は、関連するすべてのマルチトラックグループにおいてどの特性が共通し、どのファクターがマルチトラックグループを互いに異なるものとするかを規定する。関係属性は、再生用にマルチトラックグループの適切なセットを、例えばマルチビュービデオコンテンツの場合は出力ビューの数に基づいて選択するために使用されてもよい。識別属性は、プレーヤにとってセット内のどのマルチトラックグループが適切かを、例えば復号に必要とされるレベルに基づいて選択するために使用されてもよい。
【０２６１】
切り替えマルチトラックグループ関係ボックスの構文は次の通りである:
aligned(8) class MultiviewVideoMultiTrackGroupRelationBox () extends MultiTrackGroupRelationBox('swtc', version = 0, flags) {
}
【０２６２】
切り替えマルチトラックグループ関係ボックス内に列挙されるマルチトラックグループの順序は、プリファレンス順序を示してもよい。例えば、最初に示されるマルチトラックグループは、(コンテンツ作成者による判断で)再生用に好まれるものであってもよい。
【０２６３】
提示されるファイルフォーマット構造の使用について、図12に示されている例を参照して説明する。例示ビットストリームは3つのビューを含む。ビュー0は、AVC準拠のベースビューである。ビュー2内でのインター予測のための参照ピクチャは、ビュー0からビュー間予測され、ビュー1内でのインター予測のための参照ピクチャは、ビュー0および1からビュー間予測される。各ビューは、非参照ピクチャとして符号化される各ビュー内の1つおきのビューコンポーネントにより有効化される2つの時間レベルを有する。ビューを取得するために使用されるカメラは直列に配置され、2つの隣接するカメラ間の距離はキャプチャリング構成を変更しないように保たれていた。カメラは同じ方向に向いていて(すなわちその回転は同一で)、同じタイプのものであった(すなわち、内部カメラパラメータが同一であった)。
【０２６４】
図13〜15は、例示ビットストリームをコンテナファイルに格納するための考えられる方法を示す。図13では、トラックが各ビューに対し別々に形成されている。ベースビューを格納するトラックのサンプルエントリは'avc1'である。他の2つのトラックは、タイプ'mvpr'のトラック参照を用いてマークを付けられており、これは、トラック参照を含むトラックを復号するために必要なトラックを示す。
【０２６５】
以下の1つの擬似コードは、4つのマルチトラックグループを定義する。マルチトラックグループ1は、ビュー0および1から成り(トラック#1および#2)、マルチトラックグループ2は、ビュー1および2から成り(トラック#2および#3)、マルチトラックグループ3は、ビュー0および2から成り(トラック#1および#3)、マルチトラックグループ4は、すべてのビューから成る。各マルチトラックグループに対し、同じ共通および識別属性が定義されている。フレームレートならびに内部および外部カメラパラメータが、すべてのビューにおいて同じままであるため、それらは共通パラメータとして指定されている。コーデックは、トラック#1のAVC('avc1'サンプルエントリ)から、他のトラックではMVC('mvc1'サンプルエントリ)に変化する。したがって、それは識別属性として記載される。さらに、この例では、どのビューが復号されるかにより、必要なレベルが異なると仮定される(多くのコード化構成ではこの可能性が非常に高い)。
【０２６６】
次に、この擬似コードは、タイプ"切り替え"の3つのマルチトラックグループ関係ボックスを規定している。第1の関係ボックスは、定義されるマルチトラックグループすべてを列挙する。その共通属性は、フレームレート、内部カメラパラメータ、コーデック(すべての場合においてサンプルエントリのセットが'avc1'および'mvc1'から成るため)、ならびにプロファイル(プロファイルのセットが、ベースビューのプロファイルおよび選択されたマルチビュープロファイルから成るため)である。識別パラメータは、出力ビューの数(この例では2〜3の範囲)、外部カメラパラメータ(マルチトラックグループ3の出力ビューのカメラ間の距離が、他のマルチトラックグループのものと異なるため)、およびレベルである。任意のマルチビューコンテンツを表示できるプレーヤは、この関係ボックスに基づき再生用のマルチトラックグループを選んでもよい。
【０２６７】
第2の関係ボックスは、マルチトラックグループ1、2および3を列挙している。共通および識別パラメータは、今度は出力ビューの数が共通属性(その値は、列挙されているマルチトラックグループすべてにおいて2)であるということを除いて、第1の関係ボックスのものと同じである。任意の2ビューコンテンツを表示できるプレーヤ(例えばシャッターメガネを使用することにより)は、この関係ボックスに基づき再生用のマルチトラックグループを選んでもよい。
【０２６８】
第3の関係ボックスは、マルチトラックグループ1および2を列挙している。共通および識別パラメータは、今度は外部カメラパラメータが共通属性である(出力ビューに関するカメラ間の空間距離が、列挙されているマルチトラックグループにおいて同一であるため)ということを除いて、第2の関係ボックスのものと同じである。表示されるビューの明確な相関を必要とするプレーヤ(例えば、オートステレオスコピックディスプレイ上での表示用に)は、この関係ボックスに基づき再生用のマルチトラックグループを選んでもよい。
mtgc {
mvcg {
multi_track_group_id = 1;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 0;
track_id[1] = 2;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'cdec';
differentiating_attribute[1] = 'levl';
}
}
mvcg {
multi_track_group_id = 2;
{
entry_type[0] = 0;
track_id[0] = 2;
entry_type[1] = 0;
track_id[1] = 3;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'cdec';
differentiating_attribute[1] = 'levl';
}
}
mvcg {
multi_track_group_id = 3;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 0;
track_id[1] = 3;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'cdec';
differentiating_attribute[1] = 'levl';
}
}
mvcg {
multi_track_group_id = 4;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 0;
track_id[1] = 2;
entry_type[2] = 0;
track_id[2] = 3;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'cdec';
differentiating_attribute[1] = 'levl';
}
}
swtc { // #1
{
multi_track_group_id[0] = 1;
multi_track_group_id[1] = 2;
multi_track_group_id[2] = 3;
multi_track_group_id[3] = 4;
}
relation_attributes {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'cdec';
common_attribute[3] = 'prfl';
differentiating_attribute[0] = 'nvws';
differentiating_attribute[1] = 'ecam';
differentiating_attribute[2] = 'levl';
}
}
swtc { // #2
{
multi_track_group_id[0] = 1;
multi_track_group_id[1] = 2;
multi_track_group_id[2] = 3;
}
relation_attributes {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'cdec';
common_attribute[3] = 'prfl';
common_attribute[4] = 'nvws';
differentiating_attribute[0] = 'ecam';
differentiating_attribute[1] = 'levl';
}
}
swtc { // #3
{
multi_track_group_id[0] = 1;
multi_track_group_id[1] = 2;
}
relation_attributes {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'cdec';
common_attribute[3] = 'prfl';
common_attribute[4] = 'nvws';
common_attribute[5] = 'ecam';
differentiating_attribute[0] = 'levl';
}
}
}
【０２６９】
図14は、トラックがすべてのビューを包含するファイルを示す。ベースビューを格納するトラックのサンプルエントリは、AVCファイルリーダがトラックを構文解析および復号し得るため、'avc1'である。サンプルエントリは、MVC復号器構成レコードを含む。サンプルグループメカニズムを使用して、トラックに3つの層が規定されており、各層が1つのビューを包含している。
【０２７０】
以下の擬似コードは、図13の擬似コードと比較して、意味的に同一である。'==='は、構造のコンテンツが、図13の擬似コードと比べて変化しないままであることを示す。マルチトラックグループの要素を示すこと以外には構造が変化しなかったことが分かるが、図13の例にあるようにトラック全体を示すのと比較して、トラック内の層を示すために異なるメカニズムが必要とされる。
mtgc {
mvcg {
multi_track_group_id = 1;
{
entry_type[0] = 1;
track_id[0] = 1;
tier_id[0] = 1;
entry_type[1] = 1;
track_id[1] = 1;
tier_id[1] = 3;
}
relation_attribute_box {
===
}
}
mvcg {
multi_track_group_id = 2;
{
entry_type[0] = 1;
track_id[0] = 1;
tier_id[0] = 3;
entry_type[1] = 1;
track_id[1] = 1;
tier_id[1] = 2;
}
relation_attribute_box {
===
}
}
mvcg {
multi_track_group_id = 3;
{
entry_type[0] = 1;
track_id[0] = 1;
tier_id[0] = 1;
entry_type[1] = 1;
track_id[1] = 1;
tier_id[1] = 2;
}
relation_attribute_box {
===
}
}
mvcg {
multi_track_group_id = 4;
{
entry_type[0] = 1;
track_id[0] = 1;
tier_id[0] = 1;
entry_type[1] = 1;
track_id[1] = 1;
tier_id[1] = 3;
entry_type[2] = 1;
track_id[2] = 1;
tier_id[2] = 2;
}
relation_attribute_box {
===
}
}
swtc { // #1
===
}
swtc { // #2
===
}
swtc { // #3
===
}
}
【０２７１】
なお、提示されるメカニズムには、異なる数のビューを含むトラックを扱うのに十分な柔軟性がある。図15では、ベースビューがトラックを形成し、他のビューが別のトラックを形成するような形で例示ビットストリームが格納されている。サンプルグループメカニズムを使用して、第2のトラックには2つの層が規定されており、各層が1つのビューを包含している。
【０２７２】
以下の擬似コードは、図13および14の擬似コードセクションと比較して、意味的に同一である。
mtgc {
mvcg {
multi_track_group_id = 1;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 1;
track_id[1] = 2;
tier_id[1] = 2;
}
relation_attribute_box {
===
}
}
mvcg {
multi_track_group_id = 2;
{
entry_type[0] = 1;
track_id[0] = 2;
tier_id[0] = 2;
entry_type[1] = 1;
track_id[1] = 2;
tier_id[1] = 1;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
common_attribute[3] = 'cdec';
differentiating_attribute[1] = 'levl';
}
}
mvcg {
multi_track_group_id = 3;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 1;
track_id[1] = 2;
tier_id[1] = 1;
}
relation_attribute_box {
===
}
}
mvcg {
multi_track_group_id = 4;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 1;
track_id[1] = 2;
tier_id[1] = 2;
entry_type[2] = 1;
track_id[2] = 2;
tier_id[2] = 1;
}
relation_attribute_box {
===
}
}
swtc { // #1
===
}
swtc { // #2
===
}
swtc { // #3
===
}
}
【０２７３】
本発明の実施形態の別の例示実装が、ISOベースメディアファイルフォーマットに関連する構文およびセマンティクスの観点から以下に記載される。
【０２７４】
マルチビューグループコンテナボックス(MultiviewGroupContainerBox)は、次のように定義される。
【０２７５】
ボックスタイプ(Box Types):'mvgc'
コンテナ(Container): ムービーボックス('moov')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【０２７６】
このボックスは、マルチビューグループボックス(MultiviewGroupBox)およびマルチビューグループ関係ボックス(MultiviewGroupRelationBox)を含む。
【０２７７】
マルチビューグループコンテナボックスの構文は次のように規定される。
aligned(8) class MultiviewGroupContainerBox
extends FullBox('mvgc', version = 0, flags) {
}
【０２７８】
マルチビューグループボックスは、次のように定義される。
【０２７９】
ボックスタイプ(Box Types):'mvcg'
コンテナ(Container): マルチビューグループコンテナボックス('mvgc')
必須(Mandatory)    : いいえ
数(Quantity)       : 1以上
【０２８０】
このボックスは、出力されるマルチビュービデオストリームのビューのマルチビューグループを指定する。このボックスに含まれるトラックまたは層内の各ビューは、出力されるよう意図されている。このボックスに含まれているトラックまたは層が複数のビューを含む場合、含まれているビューすべてが出力対象である。出力ビューの復号は、出力対象でない他のビューの復号を必要とすることもある。復号に必要であるが出力対象ではないビューは、'mvpr'トラック参照から、または層依存関係ボックスから結論付けられてもよい。
【０２８１】
マルチビューグループボックスの構文は次のように規定される。
aligned(8) class MultiviewGroupBox extends FullBox('mvcg', version = 0, flags) {
unsigned int(32) multiview_group_id;
unsigned int(16) num_entries;
for(i=0; i<num_entries; i++) {
unsigned int(8) entry_type;
if (entry_type == 0)
unsigned int(32) track_id;
else if (entry_type == 1) {
unsigned int(32) track_id;
unsigned int(16) tier_id;
}
}
TierInfoBox subset_stream_info; // mandatory
MultiviewRelationAttributeBox relation_attributes; // optional
TierBitRateBox subset_stream_bit_rate; // optional
BufferingBox subset_stream_buffering; // optional
MultiviewSceneInfoBox multiview_scene_info; // optional
}
【０２８２】
なお、層情報ボックス、層ビットレートボックス、およびバッファリングボックスの存在は、前に示された層情報ボックス、層ビットレートボックス、およびバッファリングボックスの定義において言及された許可されている当該コンテナボックスに加え、マルチビューグループボックス内にも許可されなければならない。
【０２８３】
マルチビューグループボックスのセマンティクスは次のように規定される。
【０２８４】
multiview_group_idは、ファイル内のマルチビューグループの固有識別子を提供する。
【０２８５】
num_entriesは、このマルチビューグループ内に含まれるトラックおよび層の数である。
【０２８６】
entry_typeは、どのタイプのトラックまたは層が続くかを示す。entry_typeの次の値が規定される:0-トラック全体、1-トラック内の層。
【０２８７】
track_idは、トラックを示す。
【０２８８】
tier_idは、トラック内の層を示す。
【０２８９】
subset_stream_infoは、示されている出力ビューおよびそれが依存するビューを含むビットストリームサブセットの特性を示す。
【０２９０】
relation_attributesは、出力ビュー間の関係を示す。'ecam'が共通属性として使用される場合、すべての出力ビューが、カメラが同一の回転および一定な間隔を有し、直列であり、すなわち互いに平行であることを示す外部カメラパラメータに関連する。'ecam'が識別属性として使用される場合、1つの出力ビューが、他とは異なる回転の外部カメラパラメータに関連するか、または複数の出力ビューが、一定な直列間隔を有しない外部カメラパラメータに関連する。
【０２９１】
subset_stream_bit_rateは、示されている出力ビューおよびそれが依存するビューを含むビットストリームサブセットのビットレート統計を示す。TierBitRateBox内のtierBaseBitRate、tierMaxBitRate、およびtierAvgBitRateの値は規定されていない。
【０２９２】
subset_stream_bufferingは、示されている出力ビューおよびそれらが依存するビューを含むビットストリームサブセットに適用されるHRDパラメータを示す。
【０２９３】
multiview_scene_infoは、任意のアクセスユニット内の空間的に隣接した任意の出力ビュー間の、整数ピクセル解像度を単位とした最大差異を含む。
【０２９４】
マルチビューグループボックスは、他のボックスをさらに含むことにより拡張されてもよい。
【０２９５】
マルチビューグループ関係ボックス(MultiviewGroupRelationBox)は、次のように定義される。
【０２９６】
ボックスタイプ(Box Types):swtc
コンテナ(Container): マルチビューグループコンテナボックス('mvgc')
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロ以上
【０２９７】
このボックスは、1つのマルチビューグループが任意の時点で復号および再生される、マルチビューグループのセットを規定する。所与の関係属性は、関連するすべてのマルチビューグループにおいてどの特性が共通し、どのファクターがマルチビューグループを互いに異なるものとするかを規定する。関係属性は、再生用にマルチビューグループの適切なセットを、例えば出力ビューの数に基づいて選択するために使用されてもよい。識別属性は、プレーヤにとってセット内のどのマルチビューグループが適切かを、例えば復号に必要とされるレベルに基づいて選択するために使用されてもよい。
【０２９８】
マルチビューグループ関係ボックスの構文は次のように規定される。
aligned(8) class MultiviewGroupRelationBox () extends FullBox(, version = 0, flags) {
unsigned int(32) num_entries;
for (i=0; i<num_entries; i++)
unsigned int(32) multiview_group_id;
MultiviewRelationAttributeBox relation_attributes;
}
【０２９９】
マルチビューグループ関係ボックスのセマンティクスは次のように規定される。num_entriesは、関連するマルチビューグループの数を示す。multiview_group_idは、関連するマルチビューグループの識別子である。relation_attributesは、関連するマルチビューグループ間の関係を示す。
【０３００】
マルチビュー関係属性ボックス(MultiviewRelationAttributeBox)は、次のように定義される。
【０３０１】
ボックスタイプ(Box Types):'mvra'
コンテナ(Container): MultiviewGroupBoxまたはMultiviewGroupRelationBox
必須(Mandatory)    : いいえ
数(Quantity)       : ゼロまたは1
【０３０２】
マルチビュー関係属性ボックスは、マルチビューグループボックス内に含まれている場合、個別のマルチビューグループのトラックまたは層の相互関係を示す。マルチビュー関係属性ボックスは、マルチビューグループ関係ボックス内に含まれている場合、マルチビューグループの相互関係を示す。
【０３０３】
マルチビュー関係属性ボックスの構文は次のように規定される。
aligned(8) class MultiviewRelationAttributeBox
extends FullBox('mvra', version = 0, flags) {
unsigned int(16) reserved;
unsigned int(16) num_common_attributes;
for (i=0; i<num_common_attributes; i++)
unsigned int(32) common_attribute;
unsigned int(16) reserved;
unsigned int(16) num_differentiating_attributes;
for (i=0; i<num_differentiating_attributes; i++)
unsigned int(32) diffentiating_attribute;
}
【０３０４】
マルチビュー関係属性ボックスのセマンティクスに関して、ユニットは、マルチビュー関係属性ボックスがマルチビューグループボックス内に含まれているときには、トラックまたは層と規定され、マルチビュー関係属性ボックスがマルチビューグループ関係ボックスに含まれているときには、出力ビューのグループと規定される。common_attributeおよびdifferentiating_attributeは、下のリストから選択される。識別属性として使用されうる属性は、フィールドまたは情報への識別ポインタと関連付けられる。
【０３０５】
【表３】
0005462259.tif 000004
【０３０６】
すべてのユニットは、同じ共通属性を共有するか、または共通属性が合同ですべてのユニットを識別する。識別属性は、少なくとも1つのユニットが、この属性に基づき他のものとは異なることを示す。識別属性のポインタは、1つのユニットを、同じ属性を備える他のユニットと識別する情報の位置を示す。
【０３０７】
下記の擬似コードは、前の例の擬似コードと等価に、4つのマルチビューグループを定義する(num_entries、num_common_attributes、およびnum_differentiating_attributesのようないくつかのフィールドは含まれていない)。マルチビューグループ1は、ビュー0および1から成り(トラック#1および#2)、マルチビューグループ2は、ビュー1および2から成り(トラック#2および#3)、マルチビューグループ3は、ビュー0および2から成り(トラック#1および#3)、マルチビューグループ4は、すべてのビューから成る。各マルチビューグループに対し、同じ共通および識別属性が定義されている。フレームレートならびに内部および外部カメラパラメータが、すべてのビューにおいて同じままであるため、それらは共通パラメータとして指定されている。さらに、この例では、どのビューが復号されるかにより、必要なレベルが異なると仮定される(多くの符号化構成ではこの可能性が非常に高い)。
【０３０８】
次に、擬似コードは、3つのマルチビューグループ関係ボックスを規定する(この場合もやはりnum_entries、num_common_attributes、およびnum_differentiating_attributesのようないくつかのフィールドは含まれていない)。第1の関係ボックスは、定義されるマルチビューグループすべてを列挙する。その共通属性は、フレームレート、内部カメラパラメータ、およびプロファイルである(プロファイルのセットが、ベースビューのプロファイルおよび選択されたマルチビュープロファイルから成るため)。識別パラメータは、出力ビューの数(この例では2〜3の範囲)、外部カメラパラメータ(マルチビューグループ3内の出力ビューのカメラ間の距離が、他のマルチビューグループのものと異なるため)、およびレベルである。任意のマルチビューコンテンツを表示できるプレーヤは、この関係ボックスに基づき再生用のマルチビューグループを選んでもよい。
【０３０９】
第2の関係ボックスは、マルチビューグループ1、2および3を列挙している。共通および識別パラメータは、今度は出力ビューの数が共通属性(その値は、列挙されているマルチビューグループすべてにおいて2)であるということを除いて、第1の関係ボックスのものと同じである。任意の2ビューコンテンツを表示できるプレーヤ(例えばシャッターメガネを使用することにより)は、この関係ボックスに基づき再生用のマルチビューグループを選んでもよい。
【０３１０】
第3の関係ボックスは、マルチビューグループ1および2を列挙している。共通および識別パラメータは、今度は外部カメラパラメータが共通属性である(出力ビューに関するカメラ間の空間距離が、列挙されているマルチビューグループにおいて同一であるため)ということを除いて、第2の関係ボックスのものと同じである。表示されるビューの明確な相関を必要とするプレーヤ(例えば、オートステレオスコピックディスプレイ上での表示用に)は、この関係ボックスに基づき再生用のマルチビューグループを選んでもよい。
mvgc {
mvcg {
multiview_group_id = 1;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 0;
track_id[1] = 2;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'levl';
}
}
mvcg {
multiview_group_id = 2;
{
entry_type[0] = 0;
track_id[0] = 2;
entry_type[1] = 0;
track_id[1] = 3;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'levl';
}
}
mvcg {
multiview_group_id = 3;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 0;
track_id[1] = 3;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'levl';
}
}
mvcg {
multiview_group_id = 4;
{
entry_type[0] = 0;
track_id[0] = 1;
entry_type[1] = 0;
track_id[1] = 2;
entry_type[2] = 0;
track_id[2] = 3;
}
relation_attribute_box {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'ecam';
differentiating_attribute[0] = 'levl';
}
}
swtc { // #1
{
multiview_group_id[0] = 1;
multiview_group_id[1] = 2;
multiview_group_id[2] = 3;
multiview_group_id[3] = 4;
}
relation_attributes {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'prfl';
differentiating_attribute[0] = 'nvws';
differentiating_attribute[1] = 'ecam';
differentiating_attribute[2] = 'levl';
}
}
swtc { // #2
{
multiview_group_id[0] = 1;
multiview_group_id[1] = 2;
multiview_group_id[2] = 3;
}
relation_attributes {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'prfl';
common_attribute[3] = 'nvws';
differentiating_attribute[0] = 'ecam';
differentiating_attribute[1] = 'levl';
}
}
swtc { // #3
{
multiview_group_id[0] = 1;
multiview_group_id[1] = 2;
}
relation_attributes {
common_attribute[0] = 'frar';
common_attribute[1] = 'icam';
common_attribute[2] = 'prfl';
common_attribute[3] = 'nvws';
common_attribute[4] = 'ecam';
differentiating_attribute[0] = 'levl';
}
}
}
【０３１１】
本発明の実施形態の別の例示実装について、ISOベースメディアファイルフォーマットに関連する構文およびセマンティクスの観点から以下に記載する。具体的には、ISOベースメディアファイルフォーマットの第3版の、次回の修正1のgrouping_type_parameter機能が使用される。grouping _type_parameterは、そのバージョン番号が前に指定されたよりも大きいときに、サンプル-グループボックスおよびサンプルグループ記述ボックスに含まれる。grouping_type_parameterが存在する場合、サンプル-グループボックスおよびサンプルグループ記述ボックスの複数のインスタンスが、同じコンテナボックス内のgrouping_typeの同じ値で許可される。各インスタンスは、grouping_type_parameterにより識別される。本実施形態では、'mvif'サンプルグループ化のgrouping_type_parameterが、grouping_type_parameterの他の値の'mvif'サンプルグループ化と比較して、異なるセットの出力ビューを示すために使用される。grouping_type_parameterは、前の例のmultiview_group_idと等価である。MultiviewGroupEntryは、どのgroupID値またはtierID値が、出力対象でないかまたは復号に必要であるかを示すことができるような形で変更される。タイプ'mvif'のサンプルグループ記述ボックスは、さらに、共有および識別特性、ならびに例えばマルチビュー関係属性ボックスを使用した、示されるビューの関係を含んでもよい。そうでなければ、マルチトラックグループの特性およびマルチトラックグループ間の関係を示すために、前の例のいずれか1つがこの例とともに使用されてもよい。
【０３１２】
本発明の様々な実施形態では、マルチトラックグループの指示が、2つのファイルフォーマット構造を相互に関連付けるために使用される。従来、トラック参照(または特定のトラック参照ボックス内に含まれたリストに対するインデックス)が、構造を相互に関連付けるために使用されてきた。例えば、SVCファイルフォーマットのエクストラクタは、タイプ'scal'のトラック参照ボックスへのインデックスを使用して、現在のトラックに参照によってデータを含める、もとのトラックを特定する。同様に、メディアトラックのトラック識別子を使用して、当該メディアトラックから参照によりデータを含める、RTP(Real-Time Transport Protocol:リアルタイムトランスポートプロトコル)ヒントトラックサンプルのコンストラクタがある。
【０３１３】
図16に示されている、マルチトラックグループによる参照の例を使用して、一実施形態について説明する。この図面は、マルチビュービットストリームと、そのビュー間予測階層とを提示する。ビュー1および2は、ベースビューから予測される一方、ビュー3は、ビュー0および1から予測され、ビュー4は、ビュー0および2から予測される。ビュー1および2両方に関連するSEIメッセージがあるが、これは例えばSEIメッセージをMVCスケーラブルネスティングSEIメッセージに含めることによる。
【０３１４】
図16に提示されているビットストリームが、ビュー1および2が別々のトラックに格納されるような形でファイルに格納されると、SEI NALユニットの格納場所が問題となる。SEI NALユニットの格納にはいくつかのオプションがあり、少なくとも以下が含まれる。
【０３１５】
SEI NALユニットが複製されて、それが適用される各トラック内に含まれてもよい。これは、ファイルサイズの増大につながる。さらに、ビュー1および2両方が復号されるビットストリームに含まれると、復号器がSEIメッセージの複製をどのように処理するかが不確定となってもよい。さらに、符号化器は、SEIメッセージの1つのみのコピーを含むビットストリームを作成しており、ビットストリームのバッファリングコンプライアンスがそれに応じて調整され、信号伝達されている。SEIメッセージの複製は、ファイルパーサにより作成されたストリームのバッファリングコンプライアンスを機能させなくする可能性がある。
【０３１６】
SEI NALユニットは、パラメータセットトラックに含まれてもよい。ビュー1および2のトラックは、ビュー1および2のトラックの適切なサンプル内にエクストラクタ(または同様のもの)を含めることによって、SEI NALユニットを(参照により)明示的に含んでもよい。
【０３１７】
SEI NALユニットは、パラメータセットトラックに含まれてもよい。パラメータセットトラックのサンプルフォーマットは、SEI NALユニットが適用されるマルチトラックグループ識別子のリストを含んでもよい。あるいは、パラメータセットトラックのサンプルフォーマットは、SEI NALユニットが適用されるビュー識別子のリストを含んでもよい。ファイルが再生されるとき、パーサは、復号に適切なマルチトラックグループを選ぶ。SEI NALユニットが、そのマルチトラックグループに関して有効であることが示される場合、復号器に関し再構築されるアクセスユニット内に含んだ。
【０３１８】
マルチトラックグループを示すことが、2つのファイルフォーマット構造を関連付けるために使用される別の実施形態が提示される。サンプルの復号時間は、H.264/AVC、SVCおよびMVCのHRD符号化ピクチャバッファ(CPB:coded picture buffer)リムーバルタイムと等価である。特定のアクセスユニットのCPBリムーバルタイムは、そのアクセスユニットおよび前のアクセスユニットに関して存在するNALユニットによって決まる。その結果、ビットストリームサブセットが得られると、もとのビットストリームのCPBリムーバルタイムが正確である可能性は低くなる。したがって、CPBリムーバルタイムの異なるセット、および個々にサンプルの復号時間が、各ビットストリームサブセットに提供されるべきである。種々のトラック内のMVCサンプルの、同じアクセスユニットへの関連付けは、サンプルの復号時間を介して行われるため、同じアクセスユニットのすべてのサンプルの復号時間を同一の値にセットすることが有益であり、これは、任意のビットストリームサブセットのCPBリムーバルタイムに対応しないこともある(さらに、ビットストリーム全体に適用可能なCPBリムーバルタイムと等しいこともある)。マルチビュー復号リタイミングボックスが、各サンプルに関してマルチビューグループ識別子およびデルタタイム値を含むよう規定されるとよく、これは、サンプルの復号時間に追加されると、マルチビューグループにより指定されるビットストリームサブセットに適用可能な、個別のアクセスユニットのCPBリムーバルタイムを提供する。あるいは、マルチビュー復号リタイミングサンプルグループ化は、SVCファイルフォーマットの復号リタイミンググループと同様に指定されるが、その識別子によって特定のマルチビューグループにリンクされていてもよい。
【０３１９】
図17は、1つ以上のネットワークを介して通信しうる複数の通信デバイスを含む、本発明の様々な実施形態が利用され得るシステム10を示す。システム10は、限定はされないが、携帯電話ネットワーク、無線ローカルエリアネットワーク(LAN:Local Area Network)、ブルートゥースパーソナルエリアネットワーク、イーサネット（登録商標）LAN、トークンリングLAN、広域ネットワーク、インターネットなどを含む有線または無線ネットワークの任意の組み合わせを含んでもよい。システム10は、有線および無線両方の通信デバイスを含んでもよい。
【０３２０】
例示のために、図17に示されているシステム10は、携帯電話ネットワーク11およびインターネット28を含む。インターネット28への接続性は、限定はされないが、長距離無線接続、短距離無線接続、ならびに、限定はされないが電話線、ケーブル回線、電力線、および同様のものを含む様々な有線接続を含んでもよい。
【０３２１】
システム10の例示通信デバイスは、限定はされないが、携帯電話の形態での電子デバイス12、組み合わせ携帯情報端末(PDA:personal digital assistant)・携帯電話14、PDA16、統合メッセージングデバイス(IMD:integrated messaging device)18、デスクトップコンピュータ20、ノートブックコンピュータ22などを含んでもよい。通信デバイスは、固定されたものでも、または、移動している個人に運ばれているときのように移動可能であってもよい。通信デバイスはさらに、限定はされないが、自動車、トラック、タクシー、バス、電車、船、航空機、自転車、オートバイなどを含む輸送手段に位置してもよい。通信デバイスの一部または全部は、電話およびメッセージの送受信を行い、基地局24への無線接続25を介してサービスプロバイダと通信してもよい。基地局24は、携帯電話ネットワーク11と、インターネット28との間の通信を可能にするネットワークサーバ26に接続されていてもよい。システム10は、さらなる通信デバイスおよび異なる種類の通信デバイスを含んでもよい。
【０３２２】
通信デバイスは、限定はされないが、符号分割多重アクセス(CDMA:Code Division Multiple Access)、グローバルシステムフォーモバイルコミュニケーションズ(GSM:Global System for Mobile Communications)、ユニバーサルモバイルテレコミュニケーションシステム(UMTS:Universal Mobile Telecommunications System)、時分割多元接続(TDMA:Time Division Multiple Access)、周波数分割多元接続(FDMA:Frequency Division Multiple Access)、伝送制御プロトコル/インターネットプロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)、ショートメッセージサービス(SMS:Short Messaging Service)、マルチメディアメッセージングサービス(MMS:Multimedia Messaging Service)、電子メール、インスタントメッセージングサービス(IMS:Instant Messaging Service)、ブルートゥース、IEEE 802.11などを含む、様々な伝送技術を使用して通信してもよい。本発明の様々な実施形態を実装するのに関与する通信デバイスは、限定はされないが、無線、赤外線、レーザー、ケーブル接続、および同様のものを含む、様々な媒体を使用して通信してもよい。。
【０３２３】
図18および19は、本発明の様々な実施形態に基づく、ネットワークノードとして使用されうる1つの代表となる電子デバイス12を示す。なお、当然のことながら、本発明の範囲は、1つの特定のタイプのデバイスに限定されるよう意図されてはいない。図18および19の電子デバイス12は、筐体30、液晶ディスプレイの形態のディスプレイ32、キーパッド34、マイクロホン36、受話口38、バッテリー40、赤外線ポート42、アンテナ44、一実施形態によればUICCの形式のスマートカード46、カードリーダ48、無線インターフェース回路52、コーデック回路54、コントローラ56、およびメモリ58を含む。上記のコンポーネントは、本発明の様々な実施形態に基づき、電子デバイス12が、ネットワーク上にあってもよい他のデバイスとの間で様々なメッセージを送受信できるようにする。個々の回路および要素はすべて、例えばノキア(Nokia)の様々な携帯電話においてなど、当技術分野において周知のタイプのものである。
【０３２４】
図20は、本発明の様々な実施形態が実装され得る汎用マルチメディア通信システムの図形表現である。図20に示されているように、データソース100は、アナログ、圧縮されていないデジタル、もしくは圧縮されたデジタルフォーマット、またはこれらフォーマットの任意の組み合わせでソース信号を提供する。符号化器110は、ソース信号を符号化メディアビットストリームにコード化する。なお、復号されるビットストリームは、事実上任意のタイプのネットワーク内に位置するリモートデバイスから、直接または間接的に受信されてもよい。さらに、ビットストリームは、ローカルハードウェアまたはソフトウェアから受信されてもよい。符号化器110は、オーディオおよびビデオなど、2つ以上のメディアタイプのコード化ができてもよく、または、2つ以上の符号化器110が、異なるメディアタイプのソース信号を符号化するために必要とされてもよい。符号化器110はさらに、グラフィックスおよびテキストなど、合成により生成された入力を得てもよく、または、合成メディアの符号化ビットストリームを生成できてもよい。以下では、説明を単純化するために、1つのメディアタイプの1つの符号化メディアビットストリームの処理のみが考察される。しかし、通常は、リアルタイムブロードキャストサービスはいくつかのストリーム(典型的には少なくとも1つのオーディオ、ビデオ、およびテキスト字幕ストリーム)を含むということに留意されたい。なお、さらに、システムは多数の符号化器を含むこともあるが、図20では、一般性を欠くことなく説明を単純化するために、1つのみの符号化器110が表されている。さらに、当然のことながら、本願明細書に含まれている文章および例は、コード化プロセスを具体的に記載することもあるが、当業者には当然のことながら、同じ概念および原理が、対応する復号プロセスにも当てはまり、逆の場合も同じである。
【０３２５】
符号化メディアビットストリームは、ストレージ120へ転送される。ストレージ120は、符号化メディアビットストリームを格納する任意のタイプの大容量メモリを含んでもよい。ストレージ120内の符号化メディアビットストリームのフォーマットは、エレメンタリ自立型ビットストリームフォーマットであってもよく、または1つ以上の符号化メディアビットストリームがコンテナファイルにカプセル化されてもよい。1つ以上のメディアビットストリームがコンテナファイルにカプセル化される場合、その1つ以上のメディアビットストリームをファイルに格納してファイルフォーマットメタデータを作成するためにファイル生成器(図示せず)が使用され、ファイルフォーマットメタデータもファイルに格納される。符号化器110またはストレージ120は、ファイル生成器を含んでもよく、またはファイル生成器は、符号化器110またはストレージ120のいずれかに動作可能に接続される。いくつかのシステムは、"ライブ"で動作する。すなわち、ストレージを省略して、符号化メディアビットストリームを符号化器110から直接送信機130へ転送する。次に、符号化メディアビットストリームは、必要に応じてサーバとも呼ばれる送信機130へ転送される。伝送において使用されるフォーマットは、エレメンタリ自立型ビットストリームフォーマット、パケットストリームフォーマットであってもよく、または、1つ以上の符号化メディアビットストリームがコンテナファイルにカプセル化されていてもよい。符号化器110、ストレージ120、およびサーバ130は、同じ物理的デバイスにあってもよく、別々のデバイスに含まれていてもよい。符号化器110およびサーバ130は、ライブリアルタイムコンテンツで動作してもよく、この場合、符号化メディアビットストリームは、典型的には、永続的に格納されないが、コンテンツ符号化器110および/またはサーバ130内に短期間バッファリングされて、処理遅延、転送遅延、および符号化メディアビットレートにおける変動を平滑化する。
【０３２６】
サーバ130は、符号化メディアビットストリームを、通信プロトコルスタックを使用して送信する。このスタックは、限定はされないが、リアルタイムトランスポートプロトコル(RTP)、ユーザデータグラムプロトコル(UDP:User Datagram Protocol)、およびインターネットプロトコル(IP)を含んでもよい。通信プロトコルスタックがパケット指向型である場合、サーバ130は、符号化メディアビットストリームをパケットにカプセル化する。例えば、RTPが使用される場合、サーバ130は、RTPペイロードフォーマットに従い符号化メディアビットストリームをRTPパケットにカプセル化する。典型的には、各メディアタイプは専用RTPペイロードフォーマットを有する。なお、この場合もやはりシステムは、2つ以上のサーバ130を含んでもよいが、単純化するために、以下の記載では1つのサーバ130についてのみ考察する。
【０３２７】
メディアコンテンツが、ストレージ120用に、またはデータを送信機130に入力するためにコンテナファイルにカプセル化される場合、送信機130は、"送信ファイルパーサ"を含んでも、またはそれに動作可能に接続されてもよい。特に、コンテナファイル自体は伝送されないが含まれる符号化メディアビットストリームの少なくとも1つが通信プロトコルによるトランスポート用にカプセル化される場合、送信ファイルパーサが、通信プロトコルによって伝達される符号化メディアビットストリームの適切な部分を見つける。送信ファイルパーサはさらに、パケットヘッダおよびペイロードなど、通信プロトコルの正確なフォーマット作成を支援してもよい。。マルチメディアコンテナファイルは、ISOベースメディアファイルフォーマットにおけるヒントトラックなど、通信プロトコルに関して含まれるメディアビットストリームの少なくとも1つのカプセル化に関するカプセル化命令を含んでもよい。
【０３２８】
サーバ130は、通信ネットワークを介してゲートウェイ140に接続されていても、されていなくてもよい。ゲートウェイ140は、1つの通信プロトコルスタックに従ったパケットストリームの別の通信プロトコルスタックへの変換、データストリームの統合および分岐、ならびに優勢のダウンリンクネットワーク条件に従った、転送されるストリームのビットレートの制御などのダウンリンク能力および/または受信機能力に従うデータストリームの操作など、様々なタイプの機能を実行してもよい。ゲートウェイ140の例は、マルチポイント会議制御ユニット(MCU:multipoint conference control unit)、回路交換およびパケット交換ビデオ電話間のゲートウェイ、プッシュトゥートークオーバーセルラ(PoC:Push-to-talk over Cellular)サーバ、デジタルビデオブロードキャスティングハンドヘルド(DVB-H:digital video broadcasting-handheld)システムにおけるIPエンカプスレータ、または家庭用無線ネットワークへローカルでブロードキャスト伝送を転送するセットトップボックスを含む。RTPが使用される場合、ゲートウェイ140は、RTPミキサまたはRTPトランスレータと呼ばれ、典型的にはRTP接続のエンドポイントとしての役割を果たす。
【０３２９】
システムは、1つ以上の受信機150を含み、この受信機は、典型的には、伝送された信号を受信し、復調し、符号化メディアビットストリームへと非カプセル化することができる。符号化メディアビットストリームは、レコーディングストレージ155へ転送される。レコーディングストレージ155は、符号化メディアビットストリームを格納する任意のタイプの大容量メモリを含んでもよい。あるいは、またはさらに、レコーディングストレージ155は、ランダムアクセスメモリ等の計算メモリを含んでもよい。レコーディングストレージ155内の符号化メディアビットストリームのフォーマットは、エレメンタリ自立型ビットストリームフォーマットであってもよく、または1つ以上の符号化メディアビットストリームがコンテナファイルにカプセル化されてもよい。オーディオストリームおよびビデオストリームなど、相互に関連付けられた多数の符号化メディアビットストリームがある場合、コンテナファイルが通常は使用され、受信機150は、入力ストリームからコンテナファイルを生成する受信ファイル生成器(図示せず)を含むか、それに接続される。いくつかのシステムは、"ライブ"で動作する。すなわち、ストレージ155を省略して、符号化メディアビットストリームを受信機150から直接復号器160へ転送する。一部のシステムでは、記録されるストリームの直近の部分のみ、例えば記録されるストリームの直近の10分の抜粋が、レコーディングストレージ155に保持され、その一方で、前に記録されたデータはレコーディングストレージ155から破棄される。
【０３３０】
符号化メディアビットストリームは、レコーディングストレージ155から復号器160に転送される。オーディオストリームおよびビデオストリームなど、相互に関連付けられコンテナファイルにカプセル化された多くの符号化メディアビットストリームが存在する場合、または例えばアクセスをより簡単にするために単一のメディアビットストリームがコンテナファイルにカプセル化される場合、ファイルパーサ(図示せず)を使用して、コンテナファイルから各符号化メディアビットストリームが非カプセル化される。レコーディングストレージ155または復号器160がファイルパーサを含んでもよく、または、ファイルパーサがレコーディングストレージ155または復号器160のいずれかに接続される。
【０３３１】
コーデックメディアビットストリームは、通常、復号器160によってさらに処理される。その出力は、1つ以上の非圧縮メディアストリームである。最後に、レンダラ170が、例えば、スピーカまたはディスプレイを用いて、非圧縮メディアストリームを再現してもよい。受信機150、レコーディングストレージ155、復号器160、およびレンダラ170は、同じ物理的デバイスにあってもよく、または別々のデバイスに含まれていてもよい。
【０３３２】
様々な実施形態によるファイル生成器は、符号化メディアビットストリームからマルチトラックグループを特定するか、または符号化器110からマルチトラックグループの識別を受信する。ファイル生成器は、マルチビュービデオビットストリームの意図された出力ビューなど、様々な基準でマルチトラックグループを形成してもよい。ファイル生成器は、ファイル内の特定のマルチトラックグループに符号化メディアビットストリームのどの部分が含まれているかの情報を含める。情報のフォーマットの一例は、マルチトラックグループボックスである。ファイル生成器はさらに、例えばマルチトラックグループ関係ボックスを使用することで、ファイル内のマルチトラックグループ間の関係を示してもよい。様々な実施形態による受信ファイル生成器は、ファイル生成器と同様に動作するが、符号化メディアビットストリームが受信機150から受信される。
【０３３３】
様々な実施形態による送信ファイルパーサは、ファイルのどの部分が伝送用にカプセル化されるかを判断するために、マルチトラックグループ特性および関係を読み取ってもよい。さらに、マルチトラックグループ情報は、通信プロトコル上での伝送に関するカプセル化情報に関して、ファイル生成器において作成されていることもある。そのようなカプセル化情報は、例えば、各伝送セッションがマルチビュービデオストリームの1つ以上のビューを伝える複数の伝送セッションによってマルチビュービデオストリームを伝送するためのパケットを形成する命令(ヒントトラックなど)であってもよい。
【０３３４】
様々な実施形態による送信機130は、受信機150のリクエストに応答するため、またはビットストリームが伝達されたネットワークの優勢状態など、複数の理由で、伝送されるビューを選択するよう構成されていてもよい。受信機からのリクエストは、例えば表示用のビューの変更、または前のものと比較して能力が異なる、レンダリングデバイスの変更のリクエストなどであってもよい。伝送されるビューを選択するよう構成されている送信機130は、伝送されるビューを選択するときに、送信ファイルパーサを使用するか、またはそれに動作可能に接続されていてもよい。
【０３３５】
様々な実施形態によるファイルパーサは、ファイルに含まれている個別の指示に基づきファイルからマルチトラックグループを特定する。ファイルパーサは、マルチトラックグループの特性、およびその相互の間の関係(共通および識別属性)についての情報を読み取る。特性および関係に基づき、ファイルパーサは処理するマルチトラックグループを選ぶ。ファイルパーサは、例えば、正しい数の出力ビューを有し、その外部カメラパラメータがレンダリングに使用されるディスプレイの特性に合うようなマルチビュービデオマルチトラックグループを選んでもよい。処理は通常、マルチトラックグループに対応するメディアデータをファイルから抽出することを含み、場合によっては、抽出されたメディアデータをフォーマット変更して、フォーマット変更されたメディアデータを復号およびレンダリングのために復号器160へ渡す。
【０３３６】
様々な実施形態によるファイルエディタは、ファイルに含まれている個別の指示に基づきファイルからマルチトラックグループを特定する。ファイルエディタは、マルチトラックグループの特性、およびその相互の間の関係(共通および識別属性)についての情報を読み取る。特性および関係に基づき、ファイルパーサは、どのマルチトラックグループがファイル内に保持され、どれが削除されるかを選ぶ。ファイルエディタは、例えば、目標ファイルとして、所望の数の出力ビューを有するようなマルチビュービデオマルチトラックグループを選んでもよい。ファイルエディタは、ファイルから削除されファイル内に保持されないメディアデータを特定する。次に、ファイルエディタは、そのようなメディアデータおよび関係のあるファイルメタデータを削除する。ファイルエディタはさらに、メディアデータをファイルに追加してもよい。メディアデータがファイル内の既存のメディアデータに関係するか、または追加されたメディアデータに基づいてマルチトラックグループが形成され得る場合、ファイルエディタはファイル内の符号化メディアからマルチトラックグループを特定する。ファイルエディタは、ファイル内の特定のマルチトラックグループに符号化メディアビットストリームのどの部分が含まれているかの情報を含める。ファイルエディタはさらに、ファイル内のマルチトラックグループ間の関係を示す。
【０３３７】
本願明細書に記載された様々な実施形態は、方法ステップまたはプロセスの一般的状況において記載されており、一実施形態では、ネットワーク環境においてコンピュータにより実行されるプログラムコードなどのコンピュータ実行可能命令を含みコンピュータ可読媒体において具現化されたコンピュータプログラム製品によって実装されてもよい。コンピュータ可読媒体は、限定はされないが、読み取り専用メモリ(ROM:Read Only Memory)、ランダムアクセスメモリ(RAM)、コンパクトディスク(CD:compact disc)、デジタル多目的ディスク(DVD:digital versatile disc)などを含む、リムーバブルおよび非リムーバブルストレージデバイスを含んでもよい。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでもよい。コンピュータ実行可能命令、関連したデータ構造、およびプログラムモジュールは、本願明細書に開示された方法のステップを実行するプログラムコードの例を表す。そのような実行可能命令の特定のシーケンス、または関連したデータ構造は、当該のステップまたはプロセスにおいて記載された機能を実装する対応する動作の例を表す。
【０３３８】
本発明の実施形態は、ソフトウェア、ハードウェア、アプリケーションロジック、またはソフトウェア、ハードウェア、およびアプリケーションロジックの組み合わせにおいて実装されてもよい。ソフトウェア、アプリケーションロジック、および/またはハードウェアは、例えば、チップセット、携帯デバイス、デスクトップ、ラップトップ、またはサーバ上にあってもよい。様々な実施形態のソフトウェアおよびウェブ実装は、種々のデータベース検索ステップまたはプロセス、相関ステップまたはプロセス、比較ステップまたはプロセス、および決定ステップまたはプロセスを達成するために、ルールベースのロジックおよび他のロジックを備える標準のプログラミング技術を用いて達成されてもよい。さらに、様々な実施形態が、ネットワーク構成要素またはモジュール内に完全または部分的に実装されてもよい。なお、本願明細書および以下の特許請求の範囲で使用される"コンポーネント"および"モジュール"という語は、1行以上のソフトウェアコード、および/またはハードウェア実装、および/または手動入力を受信する機器を使用した実装を包含するものとする。
【０３３９】
本発明の実施形態についての以上の記述は、例示および説明のために提示されたものである。こうした記述が網羅的であることも、または本発明を開示された厳密な形式に限定することも意図されてはおらず、上記の教示を踏まえた変更および変形が可能であり、または本発明の実践により獲得され得るものである。こうした実施形態は、当業者が意図される特定の用途に適した様々な変更を様々な実施形態に加えて本発明を利用できるよう、本発明の原理およびその実際の応用を説明するために選ばれて記載されている。
【図１】
0005462259.tif 000005
【図２】
0005462259.tif 000006
【図３Ａ】
0005462259.tif 000007
【図３Ｂ】
0005462259.tif 000008
【図４】
0005462259.tif 000009
【図５】
0005462259.tif 000010
【図６】
0005462259.tif 000011
【図７】
0005462259.tif 000012
【図８】
0005462259.tif 000013
【図９】
0005462259.tif 000014
【図１０】
0005462259.tif 000015
【図１１】
0005462259.tif 000016
【図１２】
0005462259.tif 000017
【図１３】
0005462259.tif 000018
【図１４】
0005462259.tif 000019
【図１５】
0005462259.tif 000020
【図１６】
0005462259.tif 000021
【図１７】
0005462259.tif 000022
【図１８】
0005462259.tif 000023
【図１９】
0005462259.tif 000024
【図２０】
0005462259.tif 000025