メディアコンテナファイルの管理
【課題】メディアソースブロックに編成されたメディアデータを含むメディアコンテナファイルを提供する。
【解決手段】メディアソースブロックは、FEC冗長データを生成するために順方向誤り訂正(FEC)アルゴリズムにより処理されるソース記号に区分される。ソースブロックに加え、このソースブロック区分の情報がコンテナファイルに含まれる。コンテナファイルは、メディアソースブロックと区分情報との関係を提供するメタデータを更に含む。コンテナファイルは、FECデータを計算する前の広範囲にわたるデータ処理の必要なく要求クライアントに送信されるメディアデータパケットをコンパイルするために、メディアセッションにおいてメディアサーバにより採用される。
【解決手段】メディアソースブロックは、FEC冗長データを生成するために順方向誤り訂正(FEC)アルゴリズムにより処理されるソース記号に区分される。ソースブロックに加え、このソースブロック区分の情報がコンテナファイルに含まれる。コンテナファイルは、メディアソースブロックと区分情報との関係を提供するメタデータを更に含む。コンテナファイルは、FECデータを計算する前の広範囲にわたるデータ処理の必要なく要求クライアントに送信されるメディアデータパケットをコンパイルするために、メディアセッションにおいてメディアサーバにより採用される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、メディア及びマルチメディアの管理に関し、特に、そのようなメディア及びマルチメディアコンテンツを含むメディアコンテナファイルの作成及び使用に関する。
【背景技術】
【0002】
メディア及びマルチメディアを種々のネットワークを介してクライアントへ提供することが過去数年で急増している。今日、例えば映像及び音声ストリーム又は映像及び音声ファイルの形式のメディアにアクセスするために及びそれらメディアをメディアサーバからダウンロードするために、多くのユーザがインターネットを採用している。このメディアの提供は、無線を使用するモバイル通信ネットワークにおいて開始された。現在、マルチメディア又はTVコンテンツに対してモバイルネットワークを使用することに非常に大きな関心がある。これは、多くの場合、従来技術においてモバイルTVと呼ばれる。今日、モバイルネットワークにおけるこのメディアの提供は、主にユニキャスト転送を介して利用可能である。しかし、現在、モバイルTVのブロードキャスト/マルチキャスト配信方法は開発中である。そのような標準化の取り組みの例は、3GPPのマルチメディアブロードキャスト/マルチキャストサービス(MBMS)及びヨーロッパ電気通信標準化協会(ETSI)のデジタルビデオブロードキャスト−ハンドヘルド(DVB−H)である。
【0003】
種々の有線及び無線通信ネットワークにおけるメディア提供に対する増加する要求に応じて、要求クライアントにメディアコンテンツを提供するために無線ネットワークにおいて利用可能なストリーミングサーバ及びダウンロードサーバの開発において進行中の作業がある。透過的で柔軟性のあるストリーミング/ダウンロードサーバに向かう一般的な傾向があり、それは、基本的にはサーバが種々のメディア管理機能を実行する複数の「標準」モジュール又はプログラムから構成されるべきであることを示す。それら機能に対する入力メディアコンテンツは、モジュール/プログラムがコンテンツを処理する方法に関する命令と共に提供される。これにより、サーバにおいて固定の定義済みメディア処理を使用することと比較してより柔軟性のあるメディア提供が提供される。
【0004】
従って、透過的で柔軟性のあるストリーミング/ダウンロードサーバを有するという傾向に合わせて使用されるメディアコンテナ形式が必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、従来の構成のそれら欠点及び他の欠点を克服する。
【0006】
本発明の一般的な目的は、マルチメディアセッションにおいて使用されるメディアコンテナファイルを提供することである。
【課題を解決するための手段】
【0007】
本目的及び他の目的は、添付の請求の範囲により規定される本発明により達成される。
【0008】
簡単に説明すると、本発明は、メディアコンテナファイルの生成及びその使用を含み、そのようなコンテナファイルを生成及び使用する装置を含む。
【0009】
メディアコンテナファイルを生成することは、要求クライアントに送信され、クライアントでレンダリングされるメディアデータ又はマルチメディアデータを含む少なくとも1つのメディアソースファイルを提供することを含む。このコンテナファイルは、コンテナファイルのサイズに依存して、1つ以上のメディアソースブロックから構成されると考えられる。少なくとも1つのそのようなメディアソースブロックは、ソースブロックに基づいてFEC冗長データ又は記号を計算する目的で、FECコーデックが処理するのを可能にするサイズを有するソース記号又は部分にソースブロックを区分することにより本発明に従って処理される。メディアソースブロックに対して使用する選択されたブロック区分の情報は、生成され、ソースブロックの実際のメディアコンテンツと共にコンテナファイルに格納される。メタデータは、メディアソースブロックとその区分情報との関係を提供するために提供され、コンテナファイルに含まれる。
【0010】
結果として得られるコンテナファイルは、コンテナファイル中の区分情報を使用してFECデータを計算し、ファイルのメディアデータ及び計算したFECデータを含むデータパケットをコンパイルするために、メディアセッション中にメディアサーバにより採用される。種々のFECアルゴリズムに基づいてメディアソースブロックを区分し、本発明のコンテナファイルに含まれるFEC情報を生成することに関するメディアソースブロックの前処理により、メディアサーバは、単純で計算コストの安価な方法でFECデータを計算でき、広範囲にわたるデータ処理及び計算量の多いブロック区分なしで要求クライアントに送信されるデータパケットにメディアデータ及びFECデータを挿入できる。
【0011】
好適な一実施形態において、コンテナファイルは、FECデータを計算する場合、並びにコンテナファイルのメディアデータ及びFECデータを含むデータパケットをコンパイルする場合にメディアサーバが使用し、従う命令を更に含む。そのような場合、コンテナファイルは、メディアデータが確実にクライアントに正常に転送されるのに必要とされる全てのメディアコンテンツ及び命令を含む。
【図面の簡単な説明】
【0012】
【図1】本発明の1つの面に従ってメディアコンテナファイルを生成する方法を示すフローチャートである。
【図2】図1のメディアブロック提供ステップを更に詳細に示すフローチャートである。
【図3】図1のファイル生成方法の追加のステップを示すフローチャートである。
【図4】本発明の別の面に係るメディアコンテナファイルを示す概略図である。
【図5】本発明の更なる面に係るメディアセッション管理方法を示すフローチャートである。
【図6】図5のセッション管理方法の追加のステップを示すフローチャートである。
【図7】図5のセッション管理方法の追加のステップを示すフローチャートである。
【図8】本発明に従ってメディアコンテナファイルを採用する種々のメディアストリームのコンパイルを示す概略図である。
【図9】本発明に従ってメディアコンテナファイルを管理するメディアサーバを含む通信ネットワークを示す概略図である。
【図10】本発明の更に別の面に係るコンテンツサーバを示す概略ブロック図である。
【図11】図10のメディアブロック提供器の一実施形態を更に詳細に示す概略ブロック図である。
【図12】図10のコンテナファイル作成器の一実施形態を更に詳細に示す概略ブロック図である。
【図13】本発明の更に別の面に係るメディアセッションサーバを示す概略ブロック図である。
【発明を実施するための形態】
【0013】
添付の図面と共に以下の説明を参照することにより、本発明は、本発明の更なる目的及び利点と共に最もよく理解されるだろう。
【0014】
図中、同一の図中符号は対応する要素又は類似する要素に対して使用される。
【0015】
本発明は、一般に、メディア及びマルチメディアデータの管理に関し、特に、無線を使用する通信ネットワークにおけるストリーミングサーバ又はダウンロードサーバ等のメディアサーバと関連してコンテナファイルを作成及び利用することに関する。本発明のそれらメディアコンテナファイルは、要求クライアントに送信するメディアコンテンツとメディアサーバにおいてメディア処理及び送信を実行するのに使用される命令とを含む。本発明によると、メディアコンテンツは前処理されており、メディアセッション中にメディアサーバによる効率的な管理を可能にする形式で存在する。本発明の特定の面において、元のメディアコンテンツは、メディアセッションに対する信頼性保護の提供をメディアサーバにおいて簡単化するために前処理されている。従って、コンテンツは、要求クライアントへの正常な配信の確率を増加するためにメディアセッションにおいて使用されるメディアコンテンツからの信頼性保護データの計算を可能にする形式である。
【0016】
本発明の好適な一実施形態によると、メディアコンテンツの前処理は、メディアサーバにおいて、送信されたメディアストリームに含まれる順方向誤り訂正(FEC)冗長データを計算するために実行及び適応される。
【0017】
この分野で周知のように、FECは送信されたペイロードデータに冗長データを追加することを含み、それにより受信機は追加のデータを送信機に要求する必要なく誤りを検出及び訂正できる。FECの利点は、平均して必要とされる帯域幅が大きくなるが、データの再送信が回避されることが多いことである。従って、FECがメディアコンテンツのマルチキャスト/ブロードキャストによる配信に関連して使用されるのが有利であり、この場合、再送信が行なわれにくくなる。
【0018】
FECは、従来技術においては通常FECコーデックである選択されたアルゴリズム又は方式を使用して送信される情報に冗長性を追加することにより達成される。そのような各冗長ビットは、常に多くの元の情報又はペイロードビットの複素関数である。出力に未変更の入力を含むFECコーデックは、システムコーデックと呼ばれる。換言すると、(N,K)システムFECコーデックは、K個のソース記号又はペイロード記号を保存し、(N−K)個のFEC記号を付加する。同様に、(N,K)非システムFECコーデックは、必ずしも全てを保存されているわけではないK個のソース記号からN個の(FEC又はソース)記号を作成する。
【0019】
FECコーデックには、ブロックコード及び冗長コードの2つの主な分類がある。FECブロックコーデックは、所定サイズのビット又は記号の固定サイズブロック(パケット)に対して動作し、重畳コーデックは、任意の長さのビットストリーム又は記号ストリームに対して動作する。Digital FountainのRaptor符号は、単一のソースブロックから任意の数のFEC冗長記号を作成できるFECブロックコーデックである。これは、種々の保護オーバヘッドの構成がソースブロックの構成の変更を必要としないことを意味するため、このFECコーデックの有利な特性である。しかし、リードソロモンは、保護オーバヘッドの種々の大きさに対してソースブロックの区分の変更を必要とする別のFECブロックコーデックである。FECブロックコーデックの他の例には、ゴレイ、BCH(Bose, Ray-Chaudhuri, Hocquenghem)及びハミングがある。本発明に関連して使用する好適なFECコーデックは、Digital Raptorコーデックである。
【0020】
本発明によると、メディアデータ又はメディアコンテンツ、あるいはマルチメディアデータ又はマルチメディアコンテンツは、データのレンダリングのためにコンテンツ提供器又はサーバがクライアントに提供できる任意のデータを示す。一般的な好適な例は、映像データ及び音声データを含む。データは、事前に符号化された固定レートの音声又は映像コンテンツバージョンの形式でもよく、スケーラブルな音声又は映像コンテンツの形式でもよい。他のメディアの例としては、静止画(JPEG)、ビットマップ画像(GIF及びPNG)、ベクターグラフィックス(SVG)、並びに合成音声(SP−MIDI)及びテキスト(XHTML及びSMIL)がある。
【0021】
図1は、本発明に従ってメディアコンテナファイルを生成する方法を示すフローチャートである。このメディアコンテナファイルは、メディアコンテンツを提供し、メディアデータを送信可能なデータパケットに形成するために、メディアセッション中にメディアサーバにより使用される完全な入力パッケージと考えられる。従ってコンテナファイルは、メディアコンテンツ自体に加え、処理を実行し、メディアセッション中にメディアコンテンツの送信を可能にするためにメディアサーバにより必要とされる情報及び命令を含むのが好ましい。
【0022】
方法は、少なくとも1つのメディアソースブロックが提供されるステップS1において開始する。少なくとも1つのメディアソースブロックは、クライアントに送出されることが意図されるメディアデータ又は記号を含み、それらはメディアコンテンツをユーザに提示するためにレンダリングされる。メディアブロックは固定の同一サイズであってもよく、あるいは2つ以上の多い場合は、少なくともその一部分が異なるビット/記号サイズであってもよい。ステップS1において3つ以上のメディアソースブロックが提供される場合、それらブロックは、映像ストリーム等の同一のメディアコンテンツファイル又はストリーム、並びに/あるいは異なるメディアファイル又はストリームの個別のメディアブロックと考えられてもよい。例えば、映像ストリームのいくつかのメディアソースブロック及び対応する関連する音声ストリームのいくつかのメディアブロックと考えられてもよい。
【0023】
このステップS1において、関連するメディアコンテンツが提供される。例えば、メディアコンテンツが音楽映像を含む場合、少なくとも1つの提供されたメディアブロックは映像データを含むのが好ましく、少なくとも1つのメディアブロックは対応する音声データを含む。しかし、1つの同一のメディアコンテンツが複数の潜在的なメディアバージョンで提供されてもよいことが本発明により理解される。例えば、音楽映像の映像部分は複数の事前符号化された映像バージョンで提供され、そのような各映像バージョンは、所定の帯域幅又はビットレートレベル又は間隔に関連して使用できるように適応される。従ってステップS1において、所定のメディアコンテンツの複数のバージョンが提供されてもよい。そのような場合、そのような各メディアバージョンは、1つ以上のメディアソースブロックから構成されると考えられる。複数のメディアバージョンが提供され、コンテナファイルに編成されてもよいが、通常は、メディアセッション中の所定の時間においてそのようなバージョンは1つのみ使用され、例えば利用可能な帯域幅のレベルの変化に基づいてセッション中にメディアバージョンの切り替えが行なわれてもよい。
【0024】
次のステップS2において、提供されたメディアソースブロックはソース記号、すなわちいわゆるチャンクに区分される。一般に、それら記号は数百バイトで構成される。このブロックの区分は、現在のメディアソースブロックに対するFEC記号を計算するためにメディアサーバにより使用されるFECコーデック/アルゴリズムの情報に少なくとも部分的に基づいて実行される。上述したように、リードソロモンを使用するFECコードは、所望の保護オーバヘッドの大きさ、すなわちFEC冗長記号の数に基づいてソースブロック区分の変更を必要とする。従って、実際のFECコーデック又はアルゴリズム、並びに/あるいは要求されるFEC保護オーバヘッドは、メディアソース区分及びメディア記号サイズに影響を与える可能性がある。更に、メディアコンテンツを送信するためにメディアサーバにより使用されるユーザデータグラムプロトコル(UDP)パケット等のデータパケットのサイズ等の他のパラメータは、このステップS2のソースブロック区分において使用される。そのような場合、少なくとも1つの完全なソース記号がUDPパケットに収まるように、ソース記号のサイズは制限される。
【0025】
この区分ステップS2は、メディアソースブロックがコンテナファイルの別個の場所に格納される別個のソース記号に物理的に分割されることを必ずしも示さない。それとは非常に対照的に、殆どの実際的な実現例においては、メディアソースファイルは1つの連続したデータシーケンスとしてコンテナファイルに格納されるが、複数のメディアソースブロックとして考えられるか又は実質的にメディアソースブロックに分割され、その結果、実質的にソース記号に区分される。
【0026】
次のステップS3において、区分の情報が生成される。基本的にこの情報は、データシーケンスのどの部分がメディアソースブロックのどのソース記号に属するかを特定する。区分情報は、メディアソースブロックZのビットX〜ビットYがソース記号を構成することを特定するテーブルに編成されてもよい。あるいは、情報は、各ソース記号のバイトサイズを含むことができる。メディアファイルのメディアソースブロックの開始場所が分かると、種々のソース記号に属するデータ部分を判定できる。
【0027】
所定のメディアソースブロックは、少なくとも2つの異なる区分動作に従って区分されることが本発明により理解される。例えば、第1のそのようなブロック区分は第1のFECアルゴリズムに適応され、第2の区分は第2のFECアルゴリズムに対して適応されて採用される。更にブロック区分は、メディアサーバにおける実際の所望のFECオーバヘッドに依存する可能性がある。そのような場合、種々のFECオーバヘッドに対して設計される種々のブロック区分は、ファイル作成時に判定される。区分情報は、所定のメディアソースブロックに適用可能なそれら別の区分の情報を含む。
【0028】
ステップS4において、区分されたメディアブロック及び生成された区分情報は、メディアコンテナファイルに編成される。メディアコンテンツ及び情報は、コンテナファイルの部分として挿入される。更に、コンテナファイルに編成された少なくとも1つのメディアブロックは、メディアセッション中にクライアントに送信される全てのメディアコンテンツデータを一括して含むのが好ましい。換言すると、コンテナファイルはマルチメディア表現全体に対するメディアデータを含む。
【0029】
次のステップS5は、コンテナファイルに含まれるメタデータを提供する。このメタデータは、ステップS4でコンテナファイルに追加されたメディアソースブロックとステップS4でファイルに格納された区分との関係を提供する。この関係は、ファイル内のメディアソースブロックの記憶場所から区分情報の記憶場所へのポインタ又は区分情報の記憶場所からメディアソースブロックの記憶場所へのポインタの形式である。従って、特定のメディアソースブロック又はコンテナファイル内のそのブロックの場所が与えられると、このメタデータは関連する区分情報又はファイル内のその情報の記憶場所の識別を可能にする。メディアソースブロックの識別子及び/又は関連する情報がコンテナファイルの事前定義済みの「標準」又は「デフォルト」の場所に格納される場合、ポインタを採用する代わりに、メタデータはそれらメディアソースブロックの識別子及び/又は関連する情報を含むことができる。メタデータは、ファイルのメディアソースブロック及び区分の一方を識別するために使用され、その識別した場所に基づいて、メディアソースブロック及び情報のうちのもう一方が識別される。
【0030】
本発明の一般的な実現例において、複数のメディアソースブロックがステップS1において提供される。この場合、ステップS2〜ステップS5がそのような各メディアソースブロック又は少なくともメディアソースブロックの複数のグループに対して繰り返されるのが好ましい。これを線L1により概略的に示す。ステップS1においてN個のメディアソースブロックがコンテナファイルに編成される場合、ステップS2〜ステップS5はN回繰り返されるのが好ましく、これは、ソースブロックに加え、区分情報及びメタデータの、N個のバージョンをコンテナファイルに編成することを示す。
【0031】
その後、方法は終了する。
【0032】
上述したように、本発明の目的は、実際のメディアデータに加え、FECデータを計算する時に使用されるFECに依存する区分情報を更に含むメディアコンテナファイルを提供することである。これは、ファイルからソースブロックへの分割及びブロック区分が「オフライン」で行なわれ、メディアサーバにおける実際のメディア送信処理とは無関係であることを意味する。この前処理は、サーバのタスクを簡単化し、性能要求及びサーバの複雑さを軽減する。更に、コンテナファイルは、メディアデータ及び計算されたFECデータを識別し、要求クライアントに送信されるメディアストリームに構成するためにメディアサーバにより必要とされる情報及び命令を更に含むのが好ましい。従って、コンテナファイルは、データのコンパイル及び送信のために透過的で柔軟性のあるサーバにより使用されるデータ、情報及び命令の完全なパッケージとして考えられる。
【0033】
図1と関連して上述したコンテナファイルの生成は、内部又は外部メディアコンテンツソースへのアクセス権を有するコンテンツ作成器又はサーバにおいて実行されるのが好ましい。生成されたコンテナファイルは、例えばローカルシステム内の転送、あるいはローカル又はグローバルネットワークを介する送信のために、コンピュータメモリ等の記憶媒体、あるいは電子信号又は無線信号等の物理信号で表されてもよい。一般的な一実施形態において、コンテナファイルは、種々のクライアントとのメディアセッションにおいて使用するためにメディアサーバに無線信号として提供される。
【0034】
以下において、メディアコンテナファイルという用語は、本開示において、記憶媒体に格納するためのデータファイル及び転送又は配信するための信号を含むという意味を含んで使用される。
【0035】
図2は、図1のコンテナファイル生成方法の追加のステップを示すフローチャートである。方法は、少なくとも1つのメディアソースファイルが提供されるステップS10において開始する。図示される本実施形態において、メディアコンテンツは、メディアデータを含むソースファイル又はストリームの形式でコンテナファイル作成器において入手可能である。このステップS10において、1つ以上のメディアソースファイルはコンテナファイルに含むために提供される。例えば、第1のメディアファイルは映像データを含むことができ、第2の関連するファイルは音声データを含む。メディアサーバにおいてFEC冗長データの効率的な計算及びその後のそのようなFECデータの使用を可能にするために、次のステップS11において、ステップS10で提供されるメディアソースファイルは複数のメディアブロックに分割される。このメディアソースブロックは、メディアソースファイルのセグメントとして考えられ、FECコードはそのセグメントに対して適用されるか又は動作する。ソース記号又はデータビットでのメディアブロックのサイズは、分割に関連して事前定義されるか又は選択される。前者の場合、サイズはFEC冗長データの計算に採用される所期のFEC方式又はコードにより規定される。従って、実際のFECコーデック又はアルゴリズム、並びに/あるいは要求されるFEC保護オーバヘッドは、メディアファイル分割及びメディアブロックサイズに影響を与える可能性がある。
【0036】
入力メディアソースファイルがFECコーデックにより効果的に処理される最大サイズより小さなサイズのビットサイズ又は記号サイズを有する場合、ソースファイルのメディアソースブロックへの分割は当然必要とされず、ステップS11は省略される。入力メディアソースファイルは、本発明に係るメディアソースブロックとして考えられる。
【0037】
尚、好適なブロックサイズがあるが、メディアソースファイルから生成される全てのメディアソースブロックがその好適なサイズである必要はない。例えば、メディアファイルの残りの部分が好適なブロックサイズに達する程の十分なメディアデータを含まないために、最後のメディアソースブロックは、他の同一サイズのブロックと比較して小さなサイズであってもよい。
【0038】
この分割ステップS11は、メディアソースファイルがコンテナファイルの別個の場所に格納される別個のメディアソースブロックに物理的に分割されることを必ずしも示さない。それとは非常に対照的に、殆どの実際的な実現例においては、メディアソースファイルは1つの連続したデータシーケンスとしてコンテナファイルに格納されるが、複数のメディアソースブロックとして考えられるか又は実質的にメディアソースブロックに分割される。例えば、ソース記号[0, N-1]が第1のソースブロックに属し、記号[N, 2N-1]が第2のソースブロックに属するように、2N個のソース記号を含むメディアソースファイルが分割される。
【0039】
次のステップS12において、特定のメディアソースファイル分割の情報が提供される。この情報は、メディアデータパケットストリームを提供し且つ/又はFECデータを計算する場合、メディアサーバに対する関連性の情報である。
【0040】
方法は図1のステップS2に継続し、メディアソースブロックがメディアソースブロックに区分される。
【0041】
図3は、図1のコンテナファイル生成方法の追加のステップを示すフローチャートである。方法は、図1のステップ5から継続する。次のステップS20において、ブロック区分が計算される際に基づく方式のFECアルゴリズムの情報が提供される。この情報は、特定のアルゴリズムの名前又は他の記述情報の形式である。別の方法において、利用可能な各FECアルゴリズムは事前定義済み識別子を有する。従って、このFEC識別子のみがステップS20において提供されてもよい。一般的な実現例において、単一のFECコーデックの情報が、メディアソースファイルの全てのメディアソースブロックを区分するのに採用された。しかし、所定のメディアソースファイルの種々のメディアソースブロック又は種々のソースファイルのメディアソースブロックに対して区分を行なう際に種々のFECコーデック情報を使用することが実際に可能である。従って、FEC情報は、単一のFECコーデックによるFEC記号の計算を可能にするため、あるいは種々のFECコーデックが使用されたソースブロック又はソースブロックのグループを識別するためにコンテナファイルの全てのブロックが区分されたことを特定できる。この状況において、種々の潜在的な対象FECコーデック及び/又はFECオーバヘッドに基づいて所定のソースブロックを実際に区分できる。そのような場合、ステップS20において、それら種々のFECコーデックの情報が提供されるのが好ましい。
【0042】
次のステップS21において、プロパティテーブルが提供されるのが好ましい。このプロパティテーブルは、2つ以上のメディアソースファイル/ストリームがコンテナファイルに含まれる場合に特に有用であるが、単一のメディアソースファイルを含む時にも有利に使用される。通常、ファイルプロパティテーブルは、好ましくはメディアの多目的インターネットメール拡張仕様(MIME)タイプであるメディアソースファイルのメディアタイプの情報を含む。従って、このMIME情報は、メディアが同期マルチメディア統合言語(SMIL)を含む音声メディア、映像メディア又は他のメディアタイプであることを特定できる。このMIMEタイプは、コンテナファイルに実際に含まれるデータタイプの情報をメディアサーバに提供する。プロパティテーブルは、gzipを含むメディアデータに対して採用される任意の符号化方式の情報を更に含むことができる。また、サイズ情報がプロパティテーブルに含まれる。このサイズ情報は、バイト数又は記号数に関する各メディアソースファイルの合計サイズ、ソースファイルのメディアソースブロックの各サイズ(基本的に、図2のステップS12で提供される分割情報に対応する)、データを送信する際に使用されるデータパケットに対する最大ペイロードサイズ又は対象ペイロードサイズ、メディアソース記号のサイズ(バイト)(基本的に、図1のステップS3で生成される区分情報に対応する)及び/又はFEC記号等を指定できる。ファイル名又はファイル識別子は、コンテナファイルに含まれる各メディアソースファイルに対するプロパティテーブルに含まれるのが好ましい。
【0043】
コンテナファイルの各メディアソースファイルの実際の記憶場所の情報は、プロパティテーブルにおいて見つけられるのが好ましい。この場所情報は、ソースファイルの第1のメディアソースブロックの開始位置を特定でき、残りのメディアブロックはコンテナファイルのその位置以降に見つけられる。図1のステップS5で生成され、コンテナファイルの区分情報とメディアソースブロックとの関係を提供するメタデータは、プロパティテーブルに更に含まれる。同様に、採用されるブロック区分の情報及び冗長データ計算用のFECコーデックは、テーブルに含まれるのが好ましい。
【0044】
従って、コンテナファイルのプロパティテーブルは、メディアソースに対する単一の情報ソースとして使用され、メディアセッション中のメディアパケットのコンパイルにおいて有用な関連するメディアソースファイル/ブロック及び他の情報の位置を特定する。
【0045】
FEC計算命令は、次のステップS22において生成される。それら命令は、ソースブロックの区分データ及びメタデータに基づいてメディアソースブロックに対するFECデータを計算するためにメディアサーバにより使用される。従って、それら命令は、メディアセッション中にメディアコンテンツと共に使用されるFEC記号を生成して信頼性保護を提供するために、種々のソースブロックのメディアソース記号が好ましくはFEC情報に基づいて規定されるFECコーデックに入力される方法の命令を提供するヒント又はメタデータとして考えられる。命令は、少なくとも1つのメディアソースブロックに対するFEC記号のリザーバを計算するために区分情報及びメタデータ(区分情報の識別を可能にする)と共に使用されるのが好ましい。
【0046】
好適な一実現例において、FEC計算命令は、少なくとも1つのメディアソースブロックに対するFEC冗長記号のセットの計算を規定する。このFEC記号のセットは、メディアソースブロックのソース記号に基づいて計算された1つのFEC記号、好ましくは複数のFEC記号を含むことができる。
【0047】
FEC計算命令は、所定のメディアソースブロックに対する複数の別の命令を含むことができる。例えば、第1のFECコーデックがFECアルゴリズム情報に基づいて判定されるようにFECデータ計算に使用される場合、第1の別のFEC命令が採用される。同様に、第2の別のFEC命令は、第2のFECコーデックによるFECデータの計算を規定する。あるいは又はそれに加えて、別のFEC命令は種々のFECオーバヘッドに適応され、それにより許容される最大(又は最小)のFECオーバヘッドに依存して異なる数のFEC記号の計算を基本的に特定できる。
【0048】
次のステップS23は、メディアサーバにより使用されるコンパイル命令を生成する。それら命令は、データパケットのメディアストリームを形成するために、FEC計算命令に基づいて計算されたFEC冗長データ及びメディアソースブロックのメディアデータのコンパイルを規定するのに使用される。従って、それら命令は、信頼性保護を有する送信可能なメディアパケットストリームを構成するためにコンテナファイルに含まれ、それから計算されるデータを使用する方法に関する命令を提供するヒント又はメタデータとして考えられる。それら命令は、メディアセッション中に要求クライアントに送信するのに適切なパケットにメディアデータ及びFECデータをコンパイルするために使用される。従って、命令はメディアソースデータ及びFECデータのサーバ側の送信順を記述する。しかし、通常、命令はタイムスケジュール情報、対象/ソースアドレス又はポートの情報、あるいは他のセッション特有の情報を含まない。これは、コンテナファイル及びその中のコンパイル命令は特定のセッションに透過的であり、種々の受信クライアントとの複数の種々のセッションに対する1つのメディアサーバだけでなく、種々のメディアサーバによっても実際に使用される。
【0049】
コンパイル命令はメディアソースブロックのサブセットに適用でき、それは、そのような複数の命令がセッション中にメディアサーバにより読み出されて使用される必要があることを示す。あるいは、コンパイル命令は、単一のメディアソースファイル又は実際にはコンテナファイルの全てのメディアソースファイルに必要とされる全ての情報を含む。
【0050】
ステップS23において、コンパイル命令の2つ以上のセットが実際に生成されてもよい。そのような場合、種々の別の命令が提供されるため、メディアサーバは特定のメディアセッションに採用する特定の命令セットを判定する選択肢を有する。例えば、データ送信のために単一の送信チャネルを採用する場合、第1のコンパイル命令はメディアソースブロック及びFECデータの送信順を記述するのに使用される。第2の命令は、同一のメディアソースブロック及びFECデータに適用されるが、複数のチャネルが利用可能な場合にはコンパイル/送信順情報を提供し、これは、データが順次送信されるのではなく並列的に送信されることを示す。従って、いくつかのコンパイル命令は、種々の転送チャネル状態用の別の送信セッションを提供するために使用される。
【0051】
同様に、別のコンパイル命令は、種々の信頼性保護オーバヘッドのために含まれる。例えば、第1のコンパイル命令は第1の最大保護オーバヘッドレベルに対するメディアソースブロック及びFECデータのコンパイル/送信順を記述するのに使用され、第2の命令は第2の異なるFECオーバヘッドレベルの同一のメディアソースブロックに対して使用される。この第2のFECオーバヘッドレベルが第1のレベルより高い(低い)場合、従来技術においても示されるようなより多くのFEC記号又はパリティ記号が所定の量のメディアソース記号に追加される。
【0052】
次のステップS24は、先のステップS20〜ステップS23及び好ましくは図2のステップS12において提供及び生成される情報、テーブル及び命令をコンテナファイルに編成する。コンテナファイルは、要求クライアントへの送信のためにデータを識別、計算及び構成するために、メディアサーバにより必要とされる「生」メディアデータ、情報、命令及びメタデータの完全なセットを含む。その後、方法は終了する。
【0053】
図4は、本発明に係るメディアコンテナファイル1を示す概略図である。上述したように、コンテナファイル1は、複数のメディアソースファイル10、12、14のメタデータを含み、そのようなM個のファイルを図示する。ここで、M≧1である。各ファイル10、12、14のメディアデータは、複数のメディアソースブロック20、22、24に分割されると考えられる。図中では、そのようなQ1個のブロック20、22、24は、第1のメディアソースファイル10に対して示されている。ここでQ1≧1である。そのような各メディアソースブロック20、22、24は、ソース記号に分割されると考えられる。
【0054】
コンテナファイル1は、メディアデータを含むメディアソースブロック20、22、24に加え、信頼性保護を提供するためにメディアデータと関連して使用されるFEC冗長データの計算を簡単化する目的でメディアソースブロック20、22、24に適用されたソース記号区分の事前に生成された情報を含む区分情報セット30、32、34を含む。好適な一実現例において、各メディアソースブロックは、専用の区分情報セット30、32、34を含む。そのような場合、図中の情報セット30、32、34の数Nは、
である。
【0055】
区分情報30、32、34が適用可能なメディアソースブロック20、22、24と区分情報30、32、34との関係を提供する本発明の関係メタデータ40は、コンテナファイル1に更に提供される。図4は、ファイル1におけるメタデータ40の複数の異なる可能な場所を示す。第1の実施形態において、メタデータは関連するメディアソースブロック20、22、24と関連して格納される。従って、ファイル中のメディアソースブロック20、22、24の識別により、ソースブロック20、22、24の各メタデータ40の識別も可能になる。あるいは又はそれに加えて、メタデータ40は各区分情報30、32、34と共に格納される。各情報セット30、32、34は、特定の区分情報30、32、34が適用される関連するメディアソースブロック20、22、24の識別を可能にする結び付けられた関係メタデータ40を有する。コンテナファイル1が好適なファイルプロパティテーブル60を含む場合、関係メタデータ40はそのテーブルに提供される。そのような場合、メディアサーバは、ファイルプロパティテーブル60のみを調査して、メディアセッション中に使用する関連するメディアデータ及び区分データの場所を識別してもよい。更なる可能な一実現例において、関係メタデータ40は、コンテナファイル1の種々のヒントトラック50、52、54と関連して格納される。それらヒントトラックは、メディアセッションと関連してメディアサーバにより使用されるFEC計算及び/又はコンパイル命令を含む。そのような場合、各ヒントトラック50、52、54は、そのヒントトラック50、52、54の命令により実現可能なメディアセッションに必要とされるメタデータ40のみを含む必要がある。それら複数の可能な記憶場所の組合せが更に可能であり、本発明の範囲内である。
【0056】
本発明の特定の一実施形態によると、メディアコンテナファイル1は、インタリーブユニットであり、漸進的なダウンロード又はストリーミングに対して最適化される。それにより、マルチメディア表現全体は、いわゆる漸進的なダウンロード又はストリーミングにより要求クライアントに送信及びダウンロードされる。
【0057】
ISOに基づくメディアファイル形式[1][2][3]は、本発明のメディアコンテナファイルのファイル形式として採用されるのが有利である。別のコンテナファイル形式は、MP4ファイル形式、3GPファイル形式及びQuickTime形式を含む。
【0058】
ALC(Asynchronous Layered Coding)は、大規模スケーラブル高信頼コンテンツ配信プロトコルである。これは、任意のバイナリオブジェクトの高信頼マルチキャスト配信のための基本プロトコルであり、3GPP2のBCMCS(ブロードキャスト/マルチキャストサービス)及びOMA(Open Mobile Alliance)のBAC(Browser and Content)Broadcast(BCAST)ワーキンググループにおいてブロードキャスト/マルチキャストファイル配信のための必須のプロトコルとして採用された。
【0059】
FLUTE(File Delivery over Unidirectional Transport)は、ファイルの単一方向配信のためのプロトコルをALCに加えて構築及び規定し、3GPPのMBMS及びDVB−HのIPデータキャスト(IPDC)においてブロードキャスト/マルチキャストファイル配信のための必須のプロトコルとして最近採用された。ALC及びFLUTEの双方は、インターネット技術標準化委員会(IETF)により規定される。
【0060】
FLUTEは、ALCセッションにおいて配信されるファイルと関連付けられるメタデータを保持するFDT(File Delivery Table)を規定し、FDTの帯域内の配信及び更新に対する機構を提供する。これに対して、ALCはファイルメタデータの帯域外の配信に対する他の手段に依存する。OMAのBCASTは、通常ALCセッションの十分前にクライアントに配信される電子サービスガイド(ESG)を規定する。ファイルメタデータがACLセッション中に更新される必要がある場合、ESGのフラグメントはESG配信/更新チャネルを使用することにより更新される。
【0061】
ALC又はFLUTEを介して配信されるファイルは、ISOコンテナファイルに項目として格納される。Metaボックス及びその子ボックスにより、静的メディア(画像)及びSMIL表現等の種々のデータ項目をISOに基づくメディアファイルに格納できる。それらボックスにより、ファイル名及びパスを項目に関連付けることが可能になり、ISOに基づくメディアファイルのファイルディレクトリ構造を信号で知らせることができる。
【0062】
一般に、ファイルがALC/FLUTEを介して送出される前の第1のステップは、本発明に従ってそれらファイルをソースブロック及びソース記号に区分することである。区分は、FEC方式、対象パケットサイズ及び所望のFECオーバヘッドに依存してもよい。FEC符号化のソースブロック毎に、区分情報が事前に計算され、FEC方式に関する情報及びファイル分割情報と共にISOに基づくメディアファイルに格納される。
【0063】
ファイルの送信を容易にする次のステップは、区分情報を使用してメディアソースブロックからFEC記号を計算することを規定する命令をISOに基づくメディアファイルが含むようにすることである。更に、ISOに基づくメディアファイルは、ALC/FLUTEセッション(セッション記述プロトコルを使用する)及び項目をALC又はFLUTEパケットに埋め込む方法を記述するマルチキャスト/ブロードキャストサーバに対する命令を更に含むのが好ましい。
【0064】
一方ではファイル区分、他方ではファイルの配信に対するヒントトラックが互いに無関係に使用される。前者は、ヒントトラックの設計を助長し、例えば種々のFECオーバヘッドを有する別のヒントトラックが同一のFEC記号を再利用することを可能にする。それらは、ソース記号にアクセスする手段を更に提供する。しかし、サーバがヒントトラック命令に従う場合の複雑さを軽減するために、ヒントトラックは、項目のデータ範囲又はヒントサンプルにコピーされたデータを直接参照する。
【0065】
以下において、ISOに基づくメディアファイル形式の形態であり、ALC/FLUTEを介する送信に適応された本発明に係るコンテナファイルの更に詳細な実現例を提供する。しかし、これは本発明の単なる例示として考えられるべきであり、この例に対する明らかな変形例及び変更例は本発明の範囲内である。
【0066】
(ソースファイルの格納)
ALC/FLUTEを介する送信用のファイルは、コンテナファイルとして動作するISOに基づくメディアファイルの最上位のMetaボックス(「meta」)に項目として格納される。Item Locationボックス(「iloc」)は、各項目のファイルサイズと共にコンテナファイル内の各項目(メディアソースファイル)の実際の記憶場所を特定する。各項目のファイル名、コンテンツタイプ(MIMEタイプ)等は、Item Informationボックス(「iinf」)により提供される。
【0067】
(FD Item Informationボックス)
ソースファイルの区分に関する詳細は、FD Item Informationボックス(「fiin」)において提供される。そのボックスは、FDヒントトラックを採用するファイルに使用されるのが好ましく、また1つのみがMetaボックス(「meta」)に位置付けられるのが好ましい。これは以下のように定義される:
aligned(8) class FDItemInformationBox extends FullBox('fiin', version = 0, 0)
{
unsigned int(16) entry_count;
PartitionEntry[entry_count]partition_entries;
SessionGroupBox session_info;
GroupIdToNameBox group_id_to_name;
}
FD Item Informationボックスの各PartitionEntryは、特定のメディアソースファイルに対する特定のファイル区分及びメタデータに関する詳細を提供する。別の区分がISOファイルにおいて使用される場合、1つのソースファイルに対して複数のエントリを提供できる。全ての区分エントリは黙示的に番号を付けられ、通常、第1のエントリは番号1を有する。
【0068】
(区分エントリ)
ソースのPartition Entry(「paen」)は以下のように定義される:
aligned(8) class PartitionEntry extends Box('paen')
{
FilePartitionBox blocks_and_symbols;
}
これは、メディアソース区分を規定する1つのボックスを含むことができる。
【0069】
(File Partitionボックス)
File Partitionボックス(「fpar」)は、ソースファイルを識別し、そのファイルのソースブロック及び記号への区分を提供する。定義は以下の通りである:
aligned(8) class FilePartitionBox extends FullBox('fpar', version = 0, 0)
{
unsigned int(16) item_ID;
unsigned int(16) packet_payload_size;
unsigned int(16) FEC_encoding_ID;
unsigned int(16) FEC_instance_ID;
usingned int(16) max_source_block_length;
unsigned int(16) encoding_symbol_length;
unsigned int(16) max_number_of_encoding_symbols;
string scheme_specific_info;
unsigned int(16) entry_count;
for (i=1; i <= entry_count; i++)
{
unsigned int(16) block_count;
unsigned int(32) block_size;
}
}
セマンティックス:
item_IDは、ソースファイルのitem_IDを示す。2つ以上のFile InformationエントリのFile Partitionボックスの同一のitem_IDを使用することにより、ソースファイルの別の区分を提供できる。
【0070】
packet_payload_sizeは、区分アルゴリズムの対象FLUTE又はALCパケットペイロードサイズを与える。尚、UDPパケットペイロードはFLUTE又はALCヘッダを更に含むためより大きい。
【0071】
FEC_encoding_IDは、FEC符号化方式を識別する。ゼロ値は、「Null-FEC」[4]としても周知の「Compact No-Code FEC方式」等のデフォルト方式に対応する。値1は、「MBMS FEC」[5]に対応するのが好ましい。
【0072】
FEC_instance_IDは、Under-Specified FEC方式に使用されるFEC符号器のより特定的な識別を提供する。通常、この値はFully-Specified FEC方式に使用されない。Under-Specified FEC方式の更なる詳細は文献[4]を参照。
【0073】
max_source_block_lengthは、メディアソースブロック毎のソース記号の最大数を与える。
【0074】
encoding_symbol_lengthは、1つの符号化記号(ソース記号及びFECパリティ記号)のサイズ(バイト)を与える。1つの項目の全ての符号化記号は、長さが短い可能性のある最後の記号を除いて全て同一の長さを有するのが好ましい。
【0075】
max_number_of_encoding_symbolsは、文献[4]に規定されるFEC符号化ID129のソースブロックに対して生成される符号化記号の最大数を与える。
【0076】
scheme_specific_infoは、「FLUTEbis」における方式特有のオブジェクト転送情報(FEC−OTI方式特有の情報)のBase64で符号化されたヌルで終了する文字列である。情報の定義は、FEC符号化IDに依存する。
【0077】
entry_countは、ソースファイルの区分を提供する(block_count, block_size)の対のリストのエントリ数を提供する。ファイルの先頭から開始し、各エントリは、ファイルの次のセグメントがソースブロック及びソース記号に分割される方法を示す。
【0078】
block_countは、サイズblock_size(バイト)の連続するソースブロックの数を示す。記号サイズ(FEC Informationボックスで提供される)の倍数でないblock_sizeは、最後のソース記号がファイル項目に格納されていないパディングを含むことを示す。
【0079】
(項目情報ボックス)
ブロードキャスト/マルチキャストファイルダウンロードプロトコル(ALC/FLUTE)を使用して内部に埋め込まれた個別のメディアを送信するために、サーバはその個別のメディアに対応するメタデータを更に送信するのが好ましい。メタデータは、FLUTEがブロードキャストプロトコルとして使用される場合はFDTの一部として送出され、ALCがOMAのBCASTのESGと共に使用される場合はOMAのBCASTのESGの一部として送出される。
【0080】
メタデータ情報の一部は実行中に作成されてもよいため、FLUTE及びALCの双方に共通で固定のメタデータの一部に対するテンプレート構造は、項目情報エントリの第2のバージョンとして規定される。項目情報エントリのこのバージョンは、ソースファイル区分を有する項目に対する項目情報ボックスにおいて使用される。
【0081】
aligned(8) class ItemInfoEntry extends FullBox('infe', version = 1, 0)
{
unsigned int(16) item_ID;
unsigned int(16) item_protection_index;
unsigned int(32) content_length;
unsigned int(32) transfer_length;
string item_name;
string content_type;
string content_location;
string content_encoding;
string content_MD5;
unsigned int(8) entry_count;
for (i=1; i <= entry_count; i++)
{
unsigned int(32) group_id;
}
}
セマンティックス:
item_idは、プライマリリソース(例えば、「xml」ボックスに含まれる拡張マークアップ言語(XML))に対して0又は以下の情報が規定される項目のIDを含む。
【0082】
item_protection_indexは、非保護項目に対して0又はこの項目に適用される保護を規定する項目保護ボックスへの1で開始する指標(項目保護ボックスの第1のボックスは指標1を有する)を含む。
【0083】
content_lengthは、(非符号化)ファイルの全体の長さ(バイト)を与える。
【0084】
transfer_lengthは、(符号化)ファイルの全体の長さ(バイト)を与える。尚、コンテンツ符号化が適用されていない場合、転送の長さはコンテンツの長さと等しい(以下を参照)。
【0085】
item_nameは、項目の記号名、すなわち項目(ソースファイル)のファイル名を含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0086】
content_typeは、MIMEタイプの項目を有するUTF−8の文字で書かれたヌルで終了する文字列である。項目がコンテンツ符号化される場合(以下を参照)、MIMEタイプはコンテンツ復号化後の項目を参照する。
【0087】
content_locationは、HTTP/1.1[6]に規定されるようにファイルのURIを含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0088】
content_encodingは、バイナリファイルが符号化され、解釈される前に復号化される必要があることを示すために使用されるUTF−8の文字で書かれたヌルで終了する文字列である。値は、HTTP/1.1のコンテンツ符号化に対して規定される通りである。いくつかの可能な値は、「gzip」、「compress」及び「deflate」である。空文字列は、コンテンツ符号化がないことを示す。尚、項目は、コンテンツ符号化が適用された後に格納される。
【0089】
content_MD5は、ファイルのMD5ダイジェスト[6][7]を含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0090】
entry_countは、以下のリストのエントリの数を与える。
【0091】
group_IDは、ファイル項目が属するファイルグループを示す。
【0092】
全てのフィールドが採用されるのが好ましい。しかし、フィールドの対応する値が提供されていないことを示すために、ヌルで終了する文字列がヌルのみを含むことが可能である。ボックスへの今後の拡張により、追加のフィールドが最後に追加されてもよい。
【0093】
各項目に対するFile Informationボックスで提供される情報及びヒントトラックにより使用される項目のリストを考慮することにより、FDT又はESGに必要とされるファイルエントリが構成される。
【0094】
埋め込みメディアリソースのcontent_locationは、ISOに基づくメディアファイル形式[1][2]の第8.44.7節において規定されるURL(ユニバーサルリソースロケータ)形式を使用することにより参照されてもよい。
【0095】
(Session Groupボックス)
FDセッションは、各々がFDヒントトラックにより記述されるいくつかのFDチャネルを介して同時に送出できる。Session Groupボックスは、セッションのリスト、並びに各セッションに属する全てのメディアファイルグループ及びヒントトラックを含む。コンテナファイルに2つ以上のFDヒントトラックが存在する場合、1つのSession GroupボックスがFD Item Informationボックスに存在するのが好ましい。
【0096】
1つのセッショングループのみが随時処理されるべきである。セッショングループのリストされた第1のヒントトラックは、基本チャネルを特定する。メディアサーバがセッショングループ間の参照を有さない場合、通常、デフォルトの選択肢は第1のセッショングループである。ヒントトラックにより参照されるファイルを含む全てのファイルグループのグループIDは、ファイルグループのリストに含まれる。ファイルグループIDは、サーバによりFDTに含まれるファイルグループ名に変換される(Group ID To Nameボックスを使用して)。
【0097】
aligned(8) class SessionGroupBox 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_goupsは、セッショングループの数を特定する。
【0098】
entry_countは、セッショングループが準拠する全てのファイルグループを含む以下のリスト中のエントリの数を与える。セッショングループは、各ソースファイルの項目情報エントリにより特定されるようなリストされたファイルグループに含まれる全てのファイルを含む。セッショングループに対するFDTは、この構造でリストされるそれらグループのみを含むのが好ましい。
【0099】
group_IDは、セッショングループが準拠するファイルグループを示す。
【0100】
num_channels_in_session_groupsは、セッショングループのチャネルの数を特定する。num_channels_in_session_groupsの値は正数である。
【0101】
hint_track_IDは、特定のセッショングループに属するFDヒントトラックのトラックIDを特定する。1つのFDヒントトラックは、1つのLCT(Layered Coding Transport)チャネルに対応する。
【0102】
(Group ID To Nameボックス)
Group ID To Nameボックスは、ファイルグループ名を項目情報エントリにおいて使用されるファイルグループIDに関連付ける。
【0103】
aligned(8) class GroupIdToNameBox extends FullBox('gitn', version = 0, 0)
{
unsigned int(32) entry_count;
for (i=1; i<=entry_count; i++)
{
unsigned int(32) group_ID;
string group_name;
}
}
セマンティックス:
entry_countは、以下のリストのエントリの数を与える。
【0104】
group_IDは、ファイルグループを示す。
【0105】
group_nameは、対応するファイルグループ名を含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0106】
(ヒントトラックの形式)
ヒントトラック構造は、複数のデータ形式のヒントサンプルをサポートするために一般化される。ヒントトラックサンプルは、適切なタイプのパケットヘッダを構築するのに必要な任意のデータを含み、更にパケットに属するデータのメディアソースブロックへのポインタを含む。
【0107】
(サンプルエントリの形式)
FDヒントトラックは、「fdp」のサンプル記述におけるエントリ形式を有するヒントトラック(メディアハンドラ「hint」)である。「fdp」は、File Delivery Protocolの省略形である。FDHintSampleEntryは、SampleDescriptionBox(「stsd」)に含まれ、以下の構文を有する。
【0108】
class FDHintSampleEntry() extends SampleEntry('fdp')
{
uint(16) hinttrackversion = 1;
uint(16) highestcompatibleversion = 1;
uint(16) partition_entry_ID;
uint(16) FEC_overhead;
box additionaldata[];
}
セマンティックス:
partition_entry_IDは、FD項目情報ボックスの区分エントリを示す。ゼロ値は、例えばFDTに対するこのサンプルエントリと関連付けられる区分エントリが存在しないことを示す。
【0109】
FEC_overheadは、ヒントサンプルにより使用される保護オーバヘッドの比率を示す固定の値8.8である。FEC_overheadを提供する目的は、メディアサーバがセッショングループ(及び対応するFDヒントトラック)を選択するのを助長するための特性を提供することである。
【0110】
フィールド「hinttrackversion」及び「highestcompatibleversion」は、ISOに基づくメディアファイル形式[1][2]の第10.2節に説明される「RtpHintSampleEntry」と同様の解釈を有する。time_scale_entryボックスが追加のデータとして提供されてもよい。提供されない場合、パケットのタイミングに対して指示が与えられない。
【0111】
FDT又はESGに必要とされるファイルエントリは、ヒントトラックの全てのサンプルエントリ及び上記item_IDにより参照される項目の対応するFile Metadata Informationボックスを確認することにより作成される。サンプルエントリがいずれのサンプルによっても参照されない場合、それらはヒントトラックに含まれない。
【0112】
(サンプルの形式)
ヒントトラックの各FDサンプルは1つ以上のFDパケットを生成する。各サンプルは、パケットを構成するための命令及びそれらパケットを送出する場合に必要とされる任意の追加のデータ(例えば、ソースファイル又はFECに対する項目に常駐するのではなく、サンプルにコピーされる符号化記号)の2つの領域を含む。尚、サンプルのサイズは、サンプルサイズテーブルから周知である。
【0113】
aligned(8) class FDsample extends Box('fdsa')
{
FDPacketBox packetbox[]
ExtraDataBox extradata;
}
FDサンプルのサンプル番号は、メディアサーバにより処理される順番を規定する。同様に、各FDサンプルのFDパケットボックスは、処理される順番で現れる。Time Scale EntryボックスがFD Hint Sample Entryに存在する場合、サンプル時間は規定され、デフォルトビットレートに対するパケットの相対的な送出時間を提供する。実際の送信ビットレートに依存して、サーバは線形時間スケーリングを適用してもよい。サンプル時間は、スケジューリング処理を簡単化する可能性があるが、それはメディアサーバが時宜を得てパケットを送出することに依存する。
【0114】
(パケットエントリの形式)
FDサンプルの各パケットは、以下の構造[8]〜[10]を有する:
aligned(8) class FDpacketBox extends Box('fdpa')
{
header_template LCT_header_info;
unsigned int(16) entrycount1;
dataentry header_extension_constructors[entrycount1];
unsigned int(16) entrycount2;
dataentry packet_constructors[entrycount2];
}
LCT_header_infoは、現在のFDパケットに対するLCTヘッダテンプレートを含む。
【0115】
entry_count1:以下のコンストラクタの数
header_extension_constructors:LCTヘッダ拡張を構成するために使用される構造体
entry_count2:以下のコンストラクタの数
packet_constructors:FECペイロードID及びソース記号をFDパケットに構成するために使用される構造体。
【0116】
(LCTヘッダテンプレートの形式)
class header_template
{
unsigned int(1) sender_current_time_present;
unsigned int(1) expected_residual_time_present;
unsigned int(1) session_close_bit;
unsigned int(1) object_close_bit;
unsigned int(4) reserved;
unsigned int(16) transport_object_identifier;
}
LCTヘッダテンプレートは、パケットのLCTヘッダを形成するためにメディアサーバにより使用される。尚、ヘッダの一部分はサーバポリシーに依存し、テンプレートに含まれない。更に、いくつかのフィールドの長さは、サーバにより割り当てられたLCTヘッダビットに依存する。サーバは、TOIの値を変更する必要がある可能性がある。
【0117】
(LCTヘッダ拡張コンストラクタの形式)
尚、メディアサーバはEXT_FDTが存在するかを確認することによりFDTを含むパケットを識別できる。
【0118】
aligned(8) class LCTheaderextension
{
unsigned int(8) header_extension_type;
unsigned int(8) header_extension_length;
unsigned int(8) header_extension_content[];
}
header_extension_lengthは、32ビットワードの倍数で表される。ゼロ値は、ヘッダがサーバにより生成されることを意味する。
【0119】
header_extension_contentは、header_extension_lengthと等しい項目数である。
【0120】
(パケットコンストラクタの形式)
種々のコンストラクタの形式が存在する。各コンストラクタは、繰り返しを容易にするために16バイトである。最初の1バイトは、結合を区別するためのものである。この構造体は、ISOに基づくメディアファイル形式[1][2]の第10.3.2節に基づく。
【0121】
aligned(8) class FDconstructor(type)
{
unsigned int(8) constructor_type = type;
}
aligned(8) class FDnoopconstructor extends FDconstructor(0)
{
unsigned int(8) pad[15];
}
aligned(8) class FDimmediateconstructor extends FDconstructor(1)
{
unsigned int(8) count;
unsigned int(8) data[count];
unsigned int(8) pad[14 - count];
}
aligned(8) class FDsampleconstructor extends FDconstructor(2)
{
signed int(8) trackrefindex;
unsigned int(16) length;
unsigned int(32) samplenumber;
unsigned int(32) sampleoffset;
unsigned int(16) bytesperblock = 1;
unsigned int(16) samplesperblock = 1;
}
aligned(8) class FDitemconstructor extends FDconstructor(3)
{
unsigned int(16) item_ID;
unsigned int(16) extent_index;
unsigned int(64) data_offset;
unsigned int(24) data_length;
}
aligned(8) class FDxmlboxconstructor extends FDconstructor(4)
{
unsigned int(64) data_offset;
unsigned int(32) data_length;
unsigned int(24) reserved;
}
(Extra Dataボックス)
FDヒントトラックの各サンプルは、Extra Dataボックスに格納された追加のデータを含んでもよい。
【0122】
aligned(8) class ExtraDataBox extends Box('extr')
{
bit(8) extradata[];
}
図5は、本発明に係るメディアセッション管理方法を示すフローチャートである。このメディアセッション管理は、ストリーミングサーバ又はダウンロードサーバ等のメディアサーバにおいて実行され、本発明のメディアコンテナファイルを使用する。方法は、メディアコンテナファイルが提供されるステップS30において開始する。このファイルの提供は、メディアサーバの記憶場所からコンテナファイルを取り出すことにより実現されるが、これは、サーバがコンテンツ提供器又は作成器からファイルを事前に受信していることを示す。あるいは、メディアサーバは、メディアデータに対する要求と関連してコンテンツ提供器からのコンテナファイルを命令又は受信できる。
【0123】
次のステップS31において、FEC冗長データは、少なくとも1つのメディアソースブロックを使用し、少なくとも1つのソースブロックと関連付けられる区分情報及びメタデータに基づいて計算される。この計算ステップS31において、Digital FountainのRaptorコーデック等のFECブロックコーデックが採用されるのが好ましく、それはメディアブロック毎に動作する。しかし、重畳FECコーデックが採用されてもよく、それは本発明の範囲内である。好適な一実現例において、FEC冗長記号のセットは、少なくとも1つのメディアソースブロックに対して生成されてもよい。このFEC記号セットは、メディアソースブロックのソース記号に基づいて計算された1つのFEC記号、好ましくは複数のFEC記号を含むことができる。メディアソースブロックに対して計算するFEC記号の数は、採用されるFECコーデックの制限によって規定されるか、メディアソースブロックのメディアソース記号の数の関数であるか、あるいはFECオーバヘッド等の他の基準により制限されてもよい。更に、メディアコンテナファイルに含まれる情報は、計算するFEC冗長データの量を特定できる。
【0124】
好適な一実現例において、メディアコンテナファイルは、このステップS31において使用されるFEC計算命令を更に含む。FEC記号の生成のためにFECコーデックに入力されるソース記号を選択する時に、それら命令は区分情報(及び区分情報を識別するのに使用されるメタ情報)と共に使用される。
【0125】
コンテナファイルがメディアソースファイルのメディアソースブロックへの分割の情報を更に含む場合、この分割情報は、FECデータ計算に使用される適正なソース記号を識別するために使用される。
【0126】
ステップS31で計算されるFEC記号の数は、メディアセッション中のその時点で許容される最大/最小のFECオーバヘッド等のローカル基準に基づいてメディアサーバにより判定される。あるいは、上述のように、FEC計算命令等のコンテナファイルに提供される情報は、所定のメディアソースブロックに対して計算されるFEC冗長データの量を特定する。
【0127】
ステップS31のFECデータの計算は、進行中のメディアセッション中リアルタイムで実行される。あるいは、メディアサーバは、実際のセッションの前にFECデータのリザーバを生成し、FECリザーバをコンテナファイル又はメモリに格納できる。事前に計算されたFECデータは、後続のメディアセッションにおいてコンテナファイルのメディアコンテンツと共に使用される。
【0128】
次のステップS32において、メディアデータパケットは、コンテナファイルのメディアソースブロックからメディアデータを抽出し、ステップS31で計算されるようなFEC冗長データを提供することによりコンパイルされる。メディアサーバは、メディアセッション中に送信するためにメディアデータの識別子を受信するのが好ましい。あるいは、コンテナファイルは、メディアソースの選択が必要ないように単一のメディアデータファイルのメディアデータのみを含んでもよい。いずれの場合においても、ファイルプロパティテーブル等のコンテナファイルに含まれる上述の情報は、メディアファイルの開始、すなわち送信が開始されるべき第1のメディアソースブロックを識別するために使用される。更に、コンテナファイルに含まれる更なる情報は、メディアデータ及びFECデータを組み合わせて、種々のクライアントに対する1つの無線チャネル又は複数のチャネルを介する無線送信に適応されたデータパケットに含める方法に関する命令として使用される。
【0129】
次のステップS33において、FEC信頼性保護を有するコンパイルされたメディアデータパケットは、好ましくはブロードキャスト又はマルチキャスト技術によりクライアントに送信され、クライアントにおいてメディアデータがレンダリングされる。メディアサーバの送信バッファが所定のレベルに到達すると、通常、パケット送信は開始される。しかし、メディアセッション中、他のパケットが送信される間、新しいデータパケットがコンパイルされて送信バッファに入力される。これを線L2により概略的に示す。
【0130】
メディアデータの編成及び生成されたコンテナファイル、並びに事前に計算された区分データの提供により、メディアセッション中のメディアサーバの処理要求が低減される。従って、これにより、サーバが実行中にソースブロック構成及び区分を実行する必要がないため、サーバの複雑さが軽減され、サーバに柔軟性が与えられる。
【0131】
その後、方法は終了する。
【0132】
図6は、図5のメディアセッション管理方法の追加のステップを示すフローチャートである。方法は、図5のステップS30から継続する。次のステップS40において、メディアサーバは、FECデータ計算のために採用するFECアルゴリズム又はコーデックを選択する。このFECアルゴリズムは、FECデータが計算される際に基づくメディアソースブロックを区分する時に使用されるFECアルゴリズムであるのが好ましい。従って、メディアコンテナファイルはこのFECアルゴリズム/コーデックの情報を含むの好ましく、これは選択ステップS40においてメディアサーバにより採用される情報である。
【0133】
FEC情報が複数の利用可能なFECアルゴリズムの識別子を含み、所定のメディアソースブロックが複数の種々の区分において利用可能である場合、メディアサーバは、FECデータを計算する時に使用するFECアルゴリズム及びブロック区分情報を選択するために、FECオーバヘッド容量及び/又はFEC計算命令を含む他の入力情報を使用するのが好ましい。
【0134】
その後、方法は図5のステップS31に継続し、選択されたFECアルゴリズムはFECデータを計算するために使用される。
【0135】
図7は、図4のセッション管理方法の追加のステップを示すフローチャートである。方法は、図5のステップS31から継続する。次のステップS50において、メディアセッションにおいてデータを送信するために現在採用できるFECオーバヘッド容量が判定される。この容量は、メディア送信のためにサーバに割り当て可能な帯域幅レベル、このメディア送信のために採用される無線記憶媒体に対する最小及び最大のビットレートレベル等に基づいて判定又は少なくとも推定される。実際には、従来技術において周知のデータ送信と関連してそのようなオーバヘッド容量を判定する任意の技術が、ステップS50において採用されてもよい。
【0136】
FECオーバヘッド容量が判定されると、次のステップS51は、判定されたオーバヘッド容量に基づいてコンパイル命令セットを選択する。メディアコンテナファイルは、所定のメディアコンテンツに使用されるコンパイル命令の複数の別のセットを含むが、種々のレベルのFECオーバヘッドを提供する。換言すると、基本的にそれら別のコンパイル命令は、メディアデータパケットをコンパイルする時にメディアデータに追加するFEC冗長データの量を規定する。許容されるFECオーバヘッドが大きくなると、より多くのFECデータが追加される。種々の別のコンパイル命令を有することにより、メディアサーバは、現在のオーバヘッドの制限を与えられる許容される最大のFEC保護を可能にするそれら命令を使用でき、それにより、単一のコンパイル命令のセットを使用する場合と比較して種々のクライアントでメディアデータを正常に受信及び復号化する機会が増加する。
【0137】
方法は、図5のステップS32に継続する。ステップS32において、メディアデータパケットは、ステップS51で選択されたコンパイル命令に基づいてメディアコンテンツデータ及び関連するFECデータからコンパイルされる。
【0138】
メディアコンテナファイルがファイルからブロックへの分割の情報、FECアルゴリズムの情報及び/又はファイルプロパティテーブル等の追加の情報を更に含む場合、メディアサーバは、データパケットの生成及び送信の際にその追加の情報を使用できる。
【0139】
例えば、メディアサーバにとって有用な追加のデータ、好ましくはMIMEタイプの情報、任意の符号化情報、サイズ情報等は、ファイルプロパティテーブルに含まれるか又は少なくとも公表される。好適な一実現例において、このプロパティテーブルは、メディアの抽出、データパケットのコンパイル及び送信と関連して有利な又は必要とされる情報を取得するためにメディアサーバによりアクセスされる単一情報又はルックアップソースを構成する。
【0140】
図8は、本発明の一実施形態に従って別のコンパイル命令の使用を示すために使用される本発明に係るメディアコンテナファイル1を示す概略図である。コンテナファイル1は、好ましくは複数のメディアソースブロックを含むメディアソースファイル10を含む。本実施形態において、ソースファイル10の各メディアソースブロックは関連する区分情報30を有する。この図示される例において、コンテナファイル1は、種々のFECオーバヘッドのコンパイル命令を含む3つのヒントトラック50、52、54を更に含む。例えば、10%の冗長オーバヘッドが望ましい場合に第1のヒントトラック50が使用され、第2のヒントトラック52は約12%のFECオーバヘッドを与え、第3のヒントトラック54は14%のFECオーバヘッドを与える。図中、文献[5]の付録Bにおいて提案されるソースブロック構成アルゴリズムが採用されている。
【0141】
区分情報30は、ソースファイル10のメディアソースブロックに基づいてFECデータ70を計算するためにFECコーデックにより採用される。ソースファイル10が複数のメディアソースブロックを含む場合、複数のFECデータセット又はリザーバ70、すなわち好ましくはメディアソースブロック毎にFECデータの1つのセットが計算される。
【0142】
第1のヒントトラック50が選択される場合、データパケット81、82、83、84の第1のストリーム(図中、メディアソースブロック毎及びFECブロック毎に1つのデータパケットのみが示される)が生成される。しかし、第2のヒントトラック52が使用される場合、データパケット91、92、93、94の第2のストリームが生成される。第1のストリーム80と比較して、第2のストリーム90はメディアソースブロック毎により大きなFECブロック、すなわちより多くのFEC冗長データを含む。しかし、各ソースブロックは2つのストリーム80、90に同一量のメディアデータを含む。
【0143】
図9は、本発明のメディアコンテナファイル1を生成又は使用する要素を示す通信ネットワークの概略図である。コンテンツサーバ100は、メディアソースデータを受信するか又はメディアソースデータへのアクセス権を有し、メディアコンテナファイル1を構成するコンテンツ提供器又は作成器を表す。このコンテナファイル1のコピーは、図において移動端末により表される種々のクライアント300、310、320に送信(マルチキャスト)されるFECデータ及びメディアを含むデータパケットをコンパイルするためにメディアセッションにおいてコンテナファイル1を使用するメディアサーバ200に送出される。
【0144】
図10は、本発明に係るメディアコンテンツサーバ100を示す概略ブロック図である。コンテンツサーバ100は、外部ユニットと通信するための機能性(送信機/受信機、変調器/復調器、符号器/復号器)を含むように構成される一般的な入出力(I/O)ユニット110を具備する。このI/Oユニット110は、特に入力メディアコンテンツを受信及びメディアコンテナファイルに対する要求を受信するように構成される。I/Oユニット110は、通信ネットワークにおいてそのようなコンテナファイルを他のサーバに送信する時にサーバ100により採用される。
【0145】
コンテンツサーバ100は、本発明のメディアコンテナファイルを作成するように構成されるコンテナファイル作成器160を更に具備する。サーバ100は、ファイル作成器160のメディアブロックマネージャ161によりメディアコンテナファイルに入力される少なくとも1つのメディアソースブロックを提供するように構成されるメディアブロック提供器130を更に具備する。メディアブロック提供器130は、外部メディアソース400、410からメディアコンテンツを受信するI/Oユニット110又は内部データ記憶装置120から少なくとも1つの入力ソースブロックを提供する。
【0146】
メディアソースブロックは、コンテンツサーバ100のブロック区分器140に転送される。この区分器140は、FECデータを計算する目的でソースブロックに適用されるFECアルゴリズムの情報に少なくとも部分的に基づいて、入力メディアソースブロックを通常は複数のそのようなソース記号である多数のソース記号に区分する。区分動作は、ソースブロックをソース記号に物理的に分割する必要があるとは限らない。それとは非常に対照的に、区分は、ソースブロックの種々の部分を種々のソース記号に割り当てることによる実質的な分割であってもよい。
【0147】
ソースブロックに適用され、ブロック区分に影響を与えるFECアルゴリズムは、メディアソースブロックに対して常に採用される事前定義済みの標準FECアルゴリズムであってもよい。あるいは、コンテンツサーバ100のブロック区分器140又は他のユニットは、複数の利用可能なそのようなアルゴリズムから使用する特定のFECアルゴリズムを選択する。この選択において、予想される最大のFECオーバヘッド等の種々の入力データが使用される。更なる一実施形態において、ブロック区分器140は、種々の別の利用可能なFECアルゴリズムの情報に基づいて所定のメディアソースブロックの複数の別の区分を実行する。例えば、コンテンツサーバ100がメディアサーバにおいて利用可能なFECアルゴリズムに関する知識を有する場合、ブロック区分器140は、FECアルゴリズム毎に別個のブロック区分を実行できる。
【0148】
ブロック区分器140は、メディアソースブロックに適用される特定のFECアルゴリズム又は方式に基づいてブロック区分を実行することに加え、メディアセッション中にメディアサーバにより採用されるデータパケットにソース記号を収めるように適応された区分を実行するように更に動作可能である。従って、UDPパケットサイズ等のパケットサイズの情報は、区分器140により採用可能である。
【0149】
区分器140により実行される特定のソースブロック区分の情報は、情報生成器150により生成される。上述したように、この情報は、メディアソースブロックのどのビットがどのソース記号に属するかを特定できるか、あるいはより小さいサイズのソース記号である最後のソース記号を除いて、ソースブロックの全てのソース記号に適用される記号サイズを規定できる。
【0150】
この場合、ブロック区分器140はメディアソースブロックの複数の別の区分を実行し、生成器150により生成される情報はそれら別のブロック区分に関するデータを含む。
【0151】
区分情報は、情報をメディアコンテナファイルに挿入するコンテナファイル作成器160の情報マネージャ162に生成器から転送される。
【0152】
ファイル作成器160のメタデータマネージャ163は、メタデータをコンテナファイルに提供する。このメタデータは、ブロックマネージャ161により編成されるメディアソースブロックと区分情報マネージャ162により編成される区分情報との関係を提供する。
【0153】
結果として得られるメディアコンテナファイルは、データ記憶装置120に少なくとも一時的に格納されるか、あるいはI/Oユニット110によりメディアサーバに送信される。
【0154】
コンテンツサーバ100のユニット110、130、140、150、160、161、162及び163は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット110〜163が全て、通信システムの1つのネットワークノードのコンテンツサーバ100において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、コンテンツサーバ100の種々のユニット110〜163が種々のネットワークノードに配置されてもよいが、上述したような意図された動作を実行する。
【0155】
図11は、図10のメディアブロック提供器130の一実施形態を更に詳細に示す概略ブロック図である。好適な一実現例において、入力メディアコンテンツは、例えばコンテンツサーバのデータ記憶装置又はI/Oユニットからメディアファイル提供器132により提供されるメディアソースファイルの形式である。メディアソースファイルは、ファイル提供器132によりメディアファイル分割器134に転送される。分割器134は、ソースファイルを1つ以上のソースブロックに分割する。分割器134は、このファイル分割を種々の情報又はパラメータに基づいて行なう。例えばファイル分割は、FEC冗長データの計算に適用されるFECアルゴリズムに基づいて少なくとも部分的に判定される。そのような場合、ファイル分割134は、そのようなFECアルゴリズムの情報へのアクセス権を有するのが好ましい。分割器134は、メディアソースファイルをN−1個のサイズが等しいメディアソースブロック及びN−1個のブロックより小さなサイズを有する可能性のある1つのメディアソースブロックに分割できる。
【0156】
分割情報生成器136は、ファイル分割器134に接続されて構成される。生成器136は、ファイル分割器134により判定され、可能性として実行されるファイル分割の情報を生成する。第1の実現例において、生成された情報は、異なるメディアソースブロックに属するメディアソースファイルのビットを特定できる。第2の実現例において、情報は、可能性としてより小さなサイズを有する最後のソースブロックを除くメディアソースブロックのサイズ(ビット又は記号サイズ)を特定する。そのような場合、メディアソースファイルの開始場所を認識すると、種々のメディアソースブロックはその(サイズ)分割情報を使用して識別される。
【0157】
分割情報マネージャ138は、情報生成器136からの分割情報をメディアコンテナファイルに編成するためにブロック提供器130において実現される。
【0158】
メディアブロック提供器130のユニット132〜138は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット132〜138が全て、メディアブロック提供器130において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、メディアブロック提供器130の種々のユニット132〜138がコンテンツサーバの他の場所に配置されてもよい。
【0159】
図12は、図10のコンテナファイル作成器160の一実施形態を更に詳細に示す概略ブロック図である。このファイル作成器160は、上述のメディアブロックマネージャ161、区分情報マネージャ162及びメタデータマネージャ163に加え、FEC情報マネージャ164を含む。このFEC情報マネージャ164は、コンテナファイルのメディアソースブロックに適用されるFECアルゴリズムの情報を生成し、コンテナファイルに編成する。コンテンツサーバのブロック区分器により実行されるブロック区分は、ブロック区分を実行する時にもそのようなFECアルゴリズム情報を使用する。従って、ブロック区分が実行された時に基づいたFECアルゴイズムの情報は、マネージャ164により生成され、コンテナファイルに含まれるのが好ましい。
【0160】
テーブルマネージャ165は、プロパティテーブルを生成し、コンテナファイルに含めるためにファイル作成器160に含まれてもよい。このプロパティテーブルは、ファイルタイプ、ファイルサイズ、ファイル記憶場所、ファイル暗号化、ファイル名/識別子等のメディアソースファイルの情報をコンテナファイルに含むことができる。更に、本発明の区分情報、ファイル分割情報及びメタデータは、テーブルマネージャ165により生成されたプロパティテーブルに含まれる。
【0161】
FEC命令マネージャ166は、コンテナファイルのメディアソースブロックに基づいてFECデータを生成する時にメディアサーバが従うFEC命令を生成するためにファイル作成器160に含まれる。それら命令は、特定のメディアソースブロックと関連付けられる区分情報と共に、FEC記号を計算するためにFECコーデックに入力されるソース記号を特定する。種々の別のFEC命令がマネージャ166により所定のソースブロックに対して提供される。ここで、FEC命令は異なるFECコーデック及び/又はFECオーバヘッドと関連して使用されるように適応される。
【0162】
ファイル作成器160のコンパイル命令マネージャ167は、コンパイル命令を生成し、コンテナファイルに挿入する。それら命令は、メディアソースブロックのメディアデータとソースブロック及び区分情報を使用して計算されるFECデータとをコンパイルするためにメディアサーバにより使用される情報を含む。マネージャ167は、ファイルのメディアコンテンツ毎に単一の命令又は命令のセットを生成できる。あるいは、種々のFECオーバヘッドに適応された種々のそのような命令、種々のFECデータタイプ及び/又はメディアセッションで採用される異なる数の無線通信チャネルがマネージャ167により提供され、コンテナファイルに編成される。
【0163】
コンテナファイル作成器160のユニット161〜167は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット161〜167が全て、コンテナファイル作成器160において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、コンテナファイル作成器160の種々のユニット161〜167がコンテンツサーバの他の場所に配置されてもよい。
【0164】
図13は、本発明に係るメディアセッションサーバ200を示す概略ブロック図である。このメディアサーバ200は、外部ユニットとの通信を実行するI/Oユニット210を具備する。このI/Oユニット210は、特にコンテンツサーバからのメディアファイルコンテナを要求及び受信するように構成される。更にI/Oユニット210は、種々のユーザクライアントからのメディアコンテンツに対する要求又は少なくともメディアコンテンツが送信されるべきクライアントの情報に対する要求を受信する。メディアサーバ200によりコンパイルされるデータパケットは、I/Oユニット210によりそれらクライアントに送信される。
【0165】
サーバ200は、現在のセッションで使用するメディアコンテンツファイルを提供するメディアファイル提供器220を具備する。このファイル提供器220は、I/Oユニット210によりコンテンツ作成器に送信される特定のコンテナファイルに対する要求を生成してもよい。あるいは、提供器220は、メディアサーバ220に提供されたデータ記憶装置250から事前に受信したコンテナファイルを取り出す。
【0166】
メディアサーバ200のFEC計算器又はコーデック240は、コンテナファイルに格納される少なくとも1つのメディアソースブロックに対するFEC冗長データを計算する。この計算手順において、FEC計算器240は、上述のFECアルゴリズムのうち任意のアルゴリズムを使用できる。好適な一実現例において、コンテナファイルは、選択肢がある場合に採用するFECアルゴリズムを計算器240に指示する。まずFEC計算器240は、入力メディアソースブロックに対する関連する区分情報を識別する。この識別手順において、ソースブロックに関連付けられ、コンテナファイルに提供されるメタデータは、計算器240により使用される。その後、計算器240は、FECデータを生成するためにFECアルゴリズム(コンテナファイルのFEC情報に基づいて選択される)が適用されるべきメディアソースブロックのそれら部分を識別するための区分情報を使用する。
【0167】
好適な一実施形態において、適正な入力ソース記号を識別し、実際のFECデータ計算を実行する場合、メディアコンテナファイルは、区分情報に加え計算器240により使用されるFEC計算命令を更に含む。更なる入力情報は、上述のFECアルゴリズム情報(使用する適正なFECアルゴリズムの選択を可能にする)及びファイル分割情報(適正なメディアソースブロックの識別を可能にする)であってもよい。
【0168】
データパケットコンパイラ230は、提供器220からのコンテナファイルに含まれるコンパイル命令を使用して、ファイルからメディアデータ及びFEC計算器からFECデータを抽出し、その抽出データを含むデータパケットを生成するのが好ましい。そのように生成されたデータパケットは、I/Oユニット210により送信される(I/Oユニット210からストリーム又はダウンロードされる)。
【0169】
種々のコンパイル命令は、所定のメディアコンテンツに対するファイルに含まれる。例えば、命令はチャネルに依存するか又は容量に依存する。前者の場合、利用可能な無線チャネルの数及び送信されるべき並列メディアストリームの数により、コンパイラ230が使用する実際のコンパイル命令が判定される。後者の場合、FEC容量推定器260は、セッション中に採用されるFECオーバヘッドの最大量を推定するためにサーバ200に含まれるのが好ましい。オーバヘッド容量がセッションにわたり変化するため、推定器260により実行されるオーバヘッドの推定はセッション中に動的に更新されるのが好ましい。セット選択器270は、使用するファイルにおいて利用可能な特定のコンパイル命令又はコンパイル命令の命令セットを選択するために推定器260からの容量推定値を使用する。パケットコンパイラ230は、メタデータ及びFECデータをデータパケットにコンパイルするためにこの命令(セット)を使用する。
【0170】
メディアサーバ200のユニット210、220、230、240、260及び270は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット210〜270が全て、通信システムの1つのネットワークノードのメディアサーバ200において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、メディアサーバ200の種々のユニット210〜270が種々のネットワークノードに配置されてもよいが、上述したような意図された動作を実行する。
【0171】
添付の請求の範囲に規定される本発明の範囲から逸脱せずに、本発明に対して種々の変形及び変更が行なわれてもよいことが当業者には理解されるだろう。
【0172】
(参考文献)
[1]ISO/IEC 14496-12:2005: "ISO base media file format"
[2]ISO/IEC 15444-12:2005: "ISO base media file format"
[3]国際公開第WO2005/039131号
[4]RFC 3695; Compact Forward Error Correction (FEC) Schemes、2004年2月
[5]3GPP TS 26.346 V7.0.0, 3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Multimedia Broadcast/Multicast Service (MBMS); Protocols and codecs、2006年6月
[6]RFC 2616; Hypertext Transfer Protocol - HTTP/1.1、1999年6月
[7]RFC 1864; The Content-MDS Header Field、1995年10月
[8]RFC 3926; FLUTE - File Delivery over Unidirectional Transport、2004年10月
[9]RFC 3450; Asynchrononous Layered Coding (ALC) Protocol Instantiation、2002年12月
[10]REC 3451; Layered Coding Transport (LCT) Building Block、2002年12月
【技術分野】
【0001】
本発明は、一般に、メディア及びマルチメディアの管理に関し、特に、そのようなメディア及びマルチメディアコンテンツを含むメディアコンテナファイルの作成及び使用に関する。
【背景技術】
【0002】
メディア及びマルチメディアを種々のネットワークを介してクライアントへ提供することが過去数年で急増している。今日、例えば映像及び音声ストリーム又は映像及び音声ファイルの形式のメディアにアクセスするために及びそれらメディアをメディアサーバからダウンロードするために、多くのユーザがインターネットを採用している。このメディアの提供は、無線を使用するモバイル通信ネットワークにおいて開始された。現在、マルチメディア又はTVコンテンツに対してモバイルネットワークを使用することに非常に大きな関心がある。これは、多くの場合、従来技術においてモバイルTVと呼ばれる。今日、モバイルネットワークにおけるこのメディアの提供は、主にユニキャスト転送を介して利用可能である。しかし、現在、モバイルTVのブロードキャスト/マルチキャスト配信方法は開発中である。そのような標準化の取り組みの例は、3GPPのマルチメディアブロードキャスト/マルチキャストサービス(MBMS)及びヨーロッパ電気通信標準化協会(ETSI)のデジタルビデオブロードキャスト−ハンドヘルド(DVB−H)である。
【0003】
種々の有線及び無線通信ネットワークにおけるメディア提供に対する増加する要求に応じて、要求クライアントにメディアコンテンツを提供するために無線ネットワークにおいて利用可能なストリーミングサーバ及びダウンロードサーバの開発において進行中の作業がある。透過的で柔軟性のあるストリーミング/ダウンロードサーバに向かう一般的な傾向があり、それは、基本的にはサーバが種々のメディア管理機能を実行する複数の「標準」モジュール又はプログラムから構成されるべきであることを示す。それら機能に対する入力メディアコンテンツは、モジュール/プログラムがコンテンツを処理する方法に関する命令と共に提供される。これにより、サーバにおいて固定の定義済みメディア処理を使用することと比較してより柔軟性のあるメディア提供が提供される。
【0004】
従って、透過的で柔軟性のあるストリーミング/ダウンロードサーバを有するという傾向に合わせて使用されるメディアコンテナ形式が必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、従来の構成のそれら欠点及び他の欠点を克服する。
【0006】
本発明の一般的な目的は、マルチメディアセッションにおいて使用されるメディアコンテナファイルを提供することである。
【課題を解決するための手段】
【0007】
本目的及び他の目的は、添付の請求の範囲により規定される本発明により達成される。
【0008】
簡単に説明すると、本発明は、メディアコンテナファイルの生成及びその使用を含み、そのようなコンテナファイルを生成及び使用する装置を含む。
【0009】
メディアコンテナファイルを生成することは、要求クライアントに送信され、クライアントでレンダリングされるメディアデータ又はマルチメディアデータを含む少なくとも1つのメディアソースファイルを提供することを含む。このコンテナファイルは、コンテナファイルのサイズに依存して、1つ以上のメディアソースブロックから構成されると考えられる。少なくとも1つのそのようなメディアソースブロックは、ソースブロックに基づいてFEC冗長データ又は記号を計算する目的で、FECコーデックが処理するのを可能にするサイズを有するソース記号又は部分にソースブロックを区分することにより本発明に従って処理される。メディアソースブロックに対して使用する選択されたブロック区分の情報は、生成され、ソースブロックの実際のメディアコンテンツと共にコンテナファイルに格納される。メタデータは、メディアソースブロックとその区分情報との関係を提供するために提供され、コンテナファイルに含まれる。
【0010】
結果として得られるコンテナファイルは、コンテナファイル中の区分情報を使用してFECデータを計算し、ファイルのメディアデータ及び計算したFECデータを含むデータパケットをコンパイルするために、メディアセッション中にメディアサーバにより採用される。種々のFECアルゴリズムに基づいてメディアソースブロックを区分し、本発明のコンテナファイルに含まれるFEC情報を生成することに関するメディアソースブロックの前処理により、メディアサーバは、単純で計算コストの安価な方法でFECデータを計算でき、広範囲にわたるデータ処理及び計算量の多いブロック区分なしで要求クライアントに送信されるデータパケットにメディアデータ及びFECデータを挿入できる。
【0011】
好適な一実施形態において、コンテナファイルは、FECデータを計算する場合、並びにコンテナファイルのメディアデータ及びFECデータを含むデータパケットをコンパイルする場合にメディアサーバが使用し、従う命令を更に含む。そのような場合、コンテナファイルは、メディアデータが確実にクライアントに正常に転送されるのに必要とされる全てのメディアコンテンツ及び命令を含む。
【図面の簡単な説明】
【0012】
【図1】本発明の1つの面に従ってメディアコンテナファイルを生成する方法を示すフローチャートである。
【図2】図1のメディアブロック提供ステップを更に詳細に示すフローチャートである。
【図3】図1のファイル生成方法の追加のステップを示すフローチャートである。
【図4】本発明の別の面に係るメディアコンテナファイルを示す概略図である。
【図5】本発明の更なる面に係るメディアセッション管理方法を示すフローチャートである。
【図6】図5のセッション管理方法の追加のステップを示すフローチャートである。
【図7】図5のセッション管理方法の追加のステップを示すフローチャートである。
【図8】本発明に従ってメディアコンテナファイルを採用する種々のメディアストリームのコンパイルを示す概略図である。
【図9】本発明に従ってメディアコンテナファイルを管理するメディアサーバを含む通信ネットワークを示す概略図である。
【図10】本発明の更に別の面に係るコンテンツサーバを示す概略ブロック図である。
【図11】図10のメディアブロック提供器の一実施形態を更に詳細に示す概略ブロック図である。
【図12】図10のコンテナファイル作成器の一実施形態を更に詳細に示す概略ブロック図である。
【図13】本発明の更に別の面に係るメディアセッションサーバを示す概略ブロック図である。
【発明を実施するための形態】
【0013】
添付の図面と共に以下の説明を参照することにより、本発明は、本発明の更なる目的及び利点と共に最もよく理解されるだろう。
【0014】
図中、同一の図中符号は対応する要素又は類似する要素に対して使用される。
【0015】
本発明は、一般に、メディア及びマルチメディアデータの管理に関し、特に、無線を使用する通信ネットワークにおけるストリーミングサーバ又はダウンロードサーバ等のメディアサーバと関連してコンテナファイルを作成及び利用することに関する。本発明のそれらメディアコンテナファイルは、要求クライアントに送信するメディアコンテンツとメディアサーバにおいてメディア処理及び送信を実行するのに使用される命令とを含む。本発明によると、メディアコンテンツは前処理されており、メディアセッション中にメディアサーバによる効率的な管理を可能にする形式で存在する。本発明の特定の面において、元のメディアコンテンツは、メディアセッションに対する信頼性保護の提供をメディアサーバにおいて簡単化するために前処理されている。従って、コンテンツは、要求クライアントへの正常な配信の確率を増加するためにメディアセッションにおいて使用されるメディアコンテンツからの信頼性保護データの計算を可能にする形式である。
【0016】
本発明の好適な一実施形態によると、メディアコンテンツの前処理は、メディアサーバにおいて、送信されたメディアストリームに含まれる順方向誤り訂正(FEC)冗長データを計算するために実行及び適応される。
【0017】
この分野で周知のように、FECは送信されたペイロードデータに冗長データを追加することを含み、それにより受信機は追加のデータを送信機に要求する必要なく誤りを検出及び訂正できる。FECの利点は、平均して必要とされる帯域幅が大きくなるが、データの再送信が回避されることが多いことである。従って、FECがメディアコンテンツのマルチキャスト/ブロードキャストによる配信に関連して使用されるのが有利であり、この場合、再送信が行なわれにくくなる。
【0018】
FECは、従来技術においては通常FECコーデックである選択されたアルゴリズム又は方式を使用して送信される情報に冗長性を追加することにより達成される。そのような各冗長ビットは、常に多くの元の情報又はペイロードビットの複素関数である。出力に未変更の入力を含むFECコーデックは、システムコーデックと呼ばれる。換言すると、(N,K)システムFECコーデックは、K個のソース記号又はペイロード記号を保存し、(N−K)個のFEC記号を付加する。同様に、(N,K)非システムFECコーデックは、必ずしも全てを保存されているわけではないK個のソース記号からN個の(FEC又はソース)記号を作成する。
【0019】
FECコーデックには、ブロックコード及び冗長コードの2つの主な分類がある。FECブロックコーデックは、所定サイズのビット又は記号の固定サイズブロック(パケット)に対して動作し、重畳コーデックは、任意の長さのビットストリーム又は記号ストリームに対して動作する。Digital FountainのRaptor符号は、単一のソースブロックから任意の数のFEC冗長記号を作成できるFECブロックコーデックである。これは、種々の保護オーバヘッドの構成がソースブロックの構成の変更を必要としないことを意味するため、このFECコーデックの有利な特性である。しかし、リードソロモンは、保護オーバヘッドの種々の大きさに対してソースブロックの区分の変更を必要とする別のFECブロックコーデックである。FECブロックコーデックの他の例には、ゴレイ、BCH(Bose, Ray-Chaudhuri, Hocquenghem)及びハミングがある。本発明に関連して使用する好適なFECコーデックは、Digital Raptorコーデックである。
【0020】
本発明によると、メディアデータ又はメディアコンテンツ、あるいはマルチメディアデータ又はマルチメディアコンテンツは、データのレンダリングのためにコンテンツ提供器又はサーバがクライアントに提供できる任意のデータを示す。一般的な好適な例は、映像データ及び音声データを含む。データは、事前に符号化された固定レートの音声又は映像コンテンツバージョンの形式でもよく、スケーラブルな音声又は映像コンテンツの形式でもよい。他のメディアの例としては、静止画(JPEG)、ビットマップ画像(GIF及びPNG)、ベクターグラフィックス(SVG)、並びに合成音声(SP−MIDI)及びテキスト(XHTML及びSMIL)がある。
【0021】
図1は、本発明に従ってメディアコンテナファイルを生成する方法を示すフローチャートである。このメディアコンテナファイルは、メディアコンテンツを提供し、メディアデータを送信可能なデータパケットに形成するために、メディアセッション中にメディアサーバにより使用される完全な入力パッケージと考えられる。従ってコンテナファイルは、メディアコンテンツ自体に加え、処理を実行し、メディアセッション中にメディアコンテンツの送信を可能にするためにメディアサーバにより必要とされる情報及び命令を含むのが好ましい。
【0022】
方法は、少なくとも1つのメディアソースブロックが提供されるステップS1において開始する。少なくとも1つのメディアソースブロックは、クライアントに送出されることが意図されるメディアデータ又は記号を含み、それらはメディアコンテンツをユーザに提示するためにレンダリングされる。メディアブロックは固定の同一サイズであってもよく、あるいは2つ以上の多い場合は、少なくともその一部分が異なるビット/記号サイズであってもよい。ステップS1において3つ以上のメディアソースブロックが提供される場合、それらブロックは、映像ストリーム等の同一のメディアコンテンツファイル又はストリーム、並びに/あるいは異なるメディアファイル又はストリームの個別のメディアブロックと考えられてもよい。例えば、映像ストリームのいくつかのメディアソースブロック及び対応する関連する音声ストリームのいくつかのメディアブロックと考えられてもよい。
【0023】
このステップS1において、関連するメディアコンテンツが提供される。例えば、メディアコンテンツが音楽映像を含む場合、少なくとも1つの提供されたメディアブロックは映像データを含むのが好ましく、少なくとも1つのメディアブロックは対応する音声データを含む。しかし、1つの同一のメディアコンテンツが複数の潜在的なメディアバージョンで提供されてもよいことが本発明により理解される。例えば、音楽映像の映像部分は複数の事前符号化された映像バージョンで提供され、そのような各映像バージョンは、所定の帯域幅又はビットレートレベル又は間隔に関連して使用できるように適応される。従ってステップS1において、所定のメディアコンテンツの複数のバージョンが提供されてもよい。そのような場合、そのような各メディアバージョンは、1つ以上のメディアソースブロックから構成されると考えられる。複数のメディアバージョンが提供され、コンテナファイルに編成されてもよいが、通常は、メディアセッション中の所定の時間においてそのようなバージョンは1つのみ使用され、例えば利用可能な帯域幅のレベルの変化に基づいてセッション中にメディアバージョンの切り替えが行なわれてもよい。
【0024】
次のステップS2において、提供されたメディアソースブロックはソース記号、すなわちいわゆるチャンクに区分される。一般に、それら記号は数百バイトで構成される。このブロックの区分は、現在のメディアソースブロックに対するFEC記号を計算するためにメディアサーバにより使用されるFECコーデック/アルゴリズムの情報に少なくとも部分的に基づいて実行される。上述したように、リードソロモンを使用するFECコードは、所望の保護オーバヘッドの大きさ、すなわちFEC冗長記号の数に基づいてソースブロック区分の変更を必要とする。従って、実際のFECコーデック又はアルゴリズム、並びに/あるいは要求されるFEC保護オーバヘッドは、メディアソース区分及びメディア記号サイズに影響を与える可能性がある。更に、メディアコンテンツを送信するためにメディアサーバにより使用されるユーザデータグラムプロトコル(UDP)パケット等のデータパケットのサイズ等の他のパラメータは、このステップS2のソースブロック区分において使用される。そのような場合、少なくとも1つの完全なソース記号がUDPパケットに収まるように、ソース記号のサイズは制限される。
【0025】
この区分ステップS2は、メディアソースブロックがコンテナファイルの別個の場所に格納される別個のソース記号に物理的に分割されることを必ずしも示さない。それとは非常に対照的に、殆どの実際的な実現例においては、メディアソースファイルは1つの連続したデータシーケンスとしてコンテナファイルに格納されるが、複数のメディアソースブロックとして考えられるか又は実質的にメディアソースブロックに分割され、その結果、実質的にソース記号に区分される。
【0026】
次のステップS3において、区分の情報が生成される。基本的にこの情報は、データシーケンスのどの部分がメディアソースブロックのどのソース記号に属するかを特定する。区分情報は、メディアソースブロックZのビットX〜ビットYがソース記号を構成することを特定するテーブルに編成されてもよい。あるいは、情報は、各ソース記号のバイトサイズを含むことができる。メディアファイルのメディアソースブロックの開始場所が分かると、種々のソース記号に属するデータ部分を判定できる。
【0027】
所定のメディアソースブロックは、少なくとも2つの異なる区分動作に従って区分されることが本発明により理解される。例えば、第1のそのようなブロック区分は第1のFECアルゴリズムに適応され、第2の区分は第2のFECアルゴリズムに対して適応されて採用される。更にブロック区分は、メディアサーバにおける実際の所望のFECオーバヘッドに依存する可能性がある。そのような場合、種々のFECオーバヘッドに対して設計される種々のブロック区分は、ファイル作成時に判定される。区分情報は、所定のメディアソースブロックに適用可能なそれら別の区分の情報を含む。
【0028】
ステップS4において、区分されたメディアブロック及び生成された区分情報は、メディアコンテナファイルに編成される。メディアコンテンツ及び情報は、コンテナファイルの部分として挿入される。更に、コンテナファイルに編成された少なくとも1つのメディアブロックは、メディアセッション中にクライアントに送信される全てのメディアコンテンツデータを一括して含むのが好ましい。換言すると、コンテナファイルはマルチメディア表現全体に対するメディアデータを含む。
【0029】
次のステップS5は、コンテナファイルに含まれるメタデータを提供する。このメタデータは、ステップS4でコンテナファイルに追加されたメディアソースブロックとステップS4でファイルに格納された区分との関係を提供する。この関係は、ファイル内のメディアソースブロックの記憶場所から区分情報の記憶場所へのポインタ又は区分情報の記憶場所からメディアソースブロックの記憶場所へのポインタの形式である。従って、特定のメディアソースブロック又はコンテナファイル内のそのブロックの場所が与えられると、このメタデータは関連する区分情報又はファイル内のその情報の記憶場所の識別を可能にする。メディアソースブロックの識別子及び/又は関連する情報がコンテナファイルの事前定義済みの「標準」又は「デフォルト」の場所に格納される場合、ポインタを採用する代わりに、メタデータはそれらメディアソースブロックの識別子及び/又は関連する情報を含むことができる。メタデータは、ファイルのメディアソースブロック及び区分の一方を識別するために使用され、その識別した場所に基づいて、メディアソースブロック及び情報のうちのもう一方が識別される。
【0030】
本発明の一般的な実現例において、複数のメディアソースブロックがステップS1において提供される。この場合、ステップS2〜ステップS5がそのような各メディアソースブロック又は少なくともメディアソースブロックの複数のグループに対して繰り返されるのが好ましい。これを線L1により概略的に示す。ステップS1においてN個のメディアソースブロックがコンテナファイルに編成される場合、ステップS2〜ステップS5はN回繰り返されるのが好ましく、これは、ソースブロックに加え、区分情報及びメタデータの、N個のバージョンをコンテナファイルに編成することを示す。
【0031】
その後、方法は終了する。
【0032】
上述したように、本発明の目的は、実際のメディアデータに加え、FECデータを計算する時に使用されるFECに依存する区分情報を更に含むメディアコンテナファイルを提供することである。これは、ファイルからソースブロックへの分割及びブロック区分が「オフライン」で行なわれ、メディアサーバにおける実際のメディア送信処理とは無関係であることを意味する。この前処理は、サーバのタスクを簡単化し、性能要求及びサーバの複雑さを軽減する。更に、コンテナファイルは、メディアデータ及び計算されたFECデータを識別し、要求クライアントに送信されるメディアストリームに構成するためにメディアサーバにより必要とされる情報及び命令を更に含むのが好ましい。従って、コンテナファイルは、データのコンパイル及び送信のために透過的で柔軟性のあるサーバにより使用されるデータ、情報及び命令の完全なパッケージとして考えられる。
【0033】
図1と関連して上述したコンテナファイルの生成は、内部又は外部メディアコンテンツソースへのアクセス権を有するコンテンツ作成器又はサーバにおいて実行されるのが好ましい。生成されたコンテナファイルは、例えばローカルシステム内の転送、あるいはローカル又はグローバルネットワークを介する送信のために、コンピュータメモリ等の記憶媒体、あるいは電子信号又は無線信号等の物理信号で表されてもよい。一般的な一実施形態において、コンテナファイルは、種々のクライアントとのメディアセッションにおいて使用するためにメディアサーバに無線信号として提供される。
【0034】
以下において、メディアコンテナファイルという用語は、本開示において、記憶媒体に格納するためのデータファイル及び転送又は配信するための信号を含むという意味を含んで使用される。
【0035】
図2は、図1のコンテナファイル生成方法の追加のステップを示すフローチャートである。方法は、少なくとも1つのメディアソースファイルが提供されるステップS10において開始する。図示される本実施形態において、メディアコンテンツは、メディアデータを含むソースファイル又はストリームの形式でコンテナファイル作成器において入手可能である。このステップS10において、1つ以上のメディアソースファイルはコンテナファイルに含むために提供される。例えば、第1のメディアファイルは映像データを含むことができ、第2の関連するファイルは音声データを含む。メディアサーバにおいてFEC冗長データの効率的な計算及びその後のそのようなFECデータの使用を可能にするために、次のステップS11において、ステップS10で提供されるメディアソースファイルは複数のメディアブロックに分割される。このメディアソースブロックは、メディアソースファイルのセグメントとして考えられ、FECコードはそのセグメントに対して適用されるか又は動作する。ソース記号又はデータビットでのメディアブロックのサイズは、分割に関連して事前定義されるか又は選択される。前者の場合、サイズはFEC冗長データの計算に採用される所期のFEC方式又はコードにより規定される。従って、実際のFECコーデック又はアルゴリズム、並びに/あるいは要求されるFEC保護オーバヘッドは、メディアファイル分割及びメディアブロックサイズに影響を与える可能性がある。
【0036】
入力メディアソースファイルがFECコーデックにより効果的に処理される最大サイズより小さなサイズのビットサイズ又は記号サイズを有する場合、ソースファイルのメディアソースブロックへの分割は当然必要とされず、ステップS11は省略される。入力メディアソースファイルは、本発明に係るメディアソースブロックとして考えられる。
【0037】
尚、好適なブロックサイズがあるが、メディアソースファイルから生成される全てのメディアソースブロックがその好適なサイズである必要はない。例えば、メディアファイルの残りの部分が好適なブロックサイズに達する程の十分なメディアデータを含まないために、最後のメディアソースブロックは、他の同一サイズのブロックと比較して小さなサイズであってもよい。
【0038】
この分割ステップS11は、メディアソースファイルがコンテナファイルの別個の場所に格納される別個のメディアソースブロックに物理的に分割されることを必ずしも示さない。それとは非常に対照的に、殆どの実際的な実現例においては、メディアソースファイルは1つの連続したデータシーケンスとしてコンテナファイルに格納されるが、複数のメディアソースブロックとして考えられるか又は実質的にメディアソースブロックに分割される。例えば、ソース記号[0, N-1]が第1のソースブロックに属し、記号[N, 2N-1]が第2のソースブロックに属するように、2N個のソース記号を含むメディアソースファイルが分割される。
【0039】
次のステップS12において、特定のメディアソースファイル分割の情報が提供される。この情報は、メディアデータパケットストリームを提供し且つ/又はFECデータを計算する場合、メディアサーバに対する関連性の情報である。
【0040】
方法は図1のステップS2に継続し、メディアソースブロックがメディアソースブロックに区分される。
【0041】
図3は、図1のコンテナファイル生成方法の追加のステップを示すフローチャートである。方法は、図1のステップ5から継続する。次のステップS20において、ブロック区分が計算される際に基づく方式のFECアルゴリズムの情報が提供される。この情報は、特定のアルゴリズムの名前又は他の記述情報の形式である。別の方法において、利用可能な各FECアルゴリズムは事前定義済み識別子を有する。従って、このFEC識別子のみがステップS20において提供されてもよい。一般的な実現例において、単一のFECコーデックの情報が、メディアソースファイルの全てのメディアソースブロックを区分するのに採用された。しかし、所定のメディアソースファイルの種々のメディアソースブロック又は種々のソースファイルのメディアソースブロックに対して区分を行なう際に種々のFECコーデック情報を使用することが実際に可能である。従って、FEC情報は、単一のFECコーデックによるFEC記号の計算を可能にするため、あるいは種々のFECコーデックが使用されたソースブロック又はソースブロックのグループを識別するためにコンテナファイルの全てのブロックが区分されたことを特定できる。この状況において、種々の潜在的な対象FECコーデック及び/又はFECオーバヘッドに基づいて所定のソースブロックを実際に区分できる。そのような場合、ステップS20において、それら種々のFECコーデックの情報が提供されるのが好ましい。
【0042】
次のステップS21において、プロパティテーブルが提供されるのが好ましい。このプロパティテーブルは、2つ以上のメディアソースファイル/ストリームがコンテナファイルに含まれる場合に特に有用であるが、単一のメディアソースファイルを含む時にも有利に使用される。通常、ファイルプロパティテーブルは、好ましくはメディアの多目的インターネットメール拡張仕様(MIME)タイプであるメディアソースファイルのメディアタイプの情報を含む。従って、このMIME情報は、メディアが同期マルチメディア統合言語(SMIL)を含む音声メディア、映像メディア又は他のメディアタイプであることを特定できる。このMIMEタイプは、コンテナファイルに実際に含まれるデータタイプの情報をメディアサーバに提供する。プロパティテーブルは、gzipを含むメディアデータに対して採用される任意の符号化方式の情報を更に含むことができる。また、サイズ情報がプロパティテーブルに含まれる。このサイズ情報は、バイト数又は記号数に関する各メディアソースファイルの合計サイズ、ソースファイルのメディアソースブロックの各サイズ(基本的に、図2のステップS12で提供される分割情報に対応する)、データを送信する際に使用されるデータパケットに対する最大ペイロードサイズ又は対象ペイロードサイズ、メディアソース記号のサイズ(バイト)(基本的に、図1のステップS3で生成される区分情報に対応する)及び/又はFEC記号等を指定できる。ファイル名又はファイル識別子は、コンテナファイルに含まれる各メディアソースファイルに対するプロパティテーブルに含まれるのが好ましい。
【0043】
コンテナファイルの各メディアソースファイルの実際の記憶場所の情報は、プロパティテーブルにおいて見つけられるのが好ましい。この場所情報は、ソースファイルの第1のメディアソースブロックの開始位置を特定でき、残りのメディアブロックはコンテナファイルのその位置以降に見つけられる。図1のステップS5で生成され、コンテナファイルの区分情報とメディアソースブロックとの関係を提供するメタデータは、プロパティテーブルに更に含まれる。同様に、採用されるブロック区分の情報及び冗長データ計算用のFECコーデックは、テーブルに含まれるのが好ましい。
【0044】
従って、コンテナファイルのプロパティテーブルは、メディアソースに対する単一の情報ソースとして使用され、メディアセッション中のメディアパケットのコンパイルにおいて有用な関連するメディアソースファイル/ブロック及び他の情報の位置を特定する。
【0045】
FEC計算命令は、次のステップS22において生成される。それら命令は、ソースブロックの区分データ及びメタデータに基づいてメディアソースブロックに対するFECデータを計算するためにメディアサーバにより使用される。従って、それら命令は、メディアセッション中にメディアコンテンツと共に使用されるFEC記号を生成して信頼性保護を提供するために、種々のソースブロックのメディアソース記号が好ましくはFEC情報に基づいて規定されるFECコーデックに入力される方法の命令を提供するヒント又はメタデータとして考えられる。命令は、少なくとも1つのメディアソースブロックに対するFEC記号のリザーバを計算するために区分情報及びメタデータ(区分情報の識別を可能にする)と共に使用されるのが好ましい。
【0046】
好適な一実現例において、FEC計算命令は、少なくとも1つのメディアソースブロックに対するFEC冗長記号のセットの計算を規定する。このFEC記号のセットは、メディアソースブロックのソース記号に基づいて計算された1つのFEC記号、好ましくは複数のFEC記号を含むことができる。
【0047】
FEC計算命令は、所定のメディアソースブロックに対する複数の別の命令を含むことができる。例えば、第1のFECコーデックがFECアルゴリズム情報に基づいて判定されるようにFECデータ計算に使用される場合、第1の別のFEC命令が採用される。同様に、第2の別のFEC命令は、第2のFECコーデックによるFECデータの計算を規定する。あるいは又はそれに加えて、別のFEC命令は種々のFECオーバヘッドに適応され、それにより許容される最大(又は最小)のFECオーバヘッドに依存して異なる数のFEC記号の計算を基本的に特定できる。
【0048】
次のステップS23は、メディアサーバにより使用されるコンパイル命令を生成する。それら命令は、データパケットのメディアストリームを形成するために、FEC計算命令に基づいて計算されたFEC冗長データ及びメディアソースブロックのメディアデータのコンパイルを規定するのに使用される。従って、それら命令は、信頼性保護を有する送信可能なメディアパケットストリームを構成するためにコンテナファイルに含まれ、それから計算されるデータを使用する方法に関する命令を提供するヒント又はメタデータとして考えられる。それら命令は、メディアセッション中に要求クライアントに送信するのに適切なパケットにメディアデータ及びFECデータをコンパイルするために使用される。従って、命令はメディアソースデータ及びFECデータのサーバ側の送信順を記述する。しかし、通常、命令はタイムスケジュール情報、対象/ソースアドレス又はポートの情報、あるいは他のセッション特有の情報を含まない。これは、コンテナファイル及びその中のコンパイル命令は特定のセッションに透過的であり、種々の受信クライアントとの複数の種々のセッションに対する1つのメディアサーバだけでなく、種々のメディアサーバによっても実際に使用される。
【0049】
コンパイル命令はメディアソースブロックのサブセットに適用でき、それは、そのような複数の命令がセッション中にメディアサーバにより読み出されて使用される必要があることを示す。あるいは、コンパイル命令は、単一のメディアソースファイル又は実際にはコンテナファイルの全てのメディアソースファイルに必要とされる全ての情報を含む。
【0050】
ステップS23において、コンパイル命令の2つ以上のセットが実際に生成されてもよい。そのような場合、種々の別の命令が提供されるため、メディアサーバは特定のメディアセッションに採用する特定の命令セットを判定する選択肢を有する。例えば、データ送信のために単一の送信チャネルを採用する場合、第1のコンパイル命令はメディアソースブロック及びFECデータの送信順を記述するのに使用される。第2の命令は、同一のメディアソースブロック及びFECデータに適用されるが、複数のチャネルが利用可能な場合にはコンパイル/送信順情報を提供し、これは、データが順次送信されるのではなく並列的に送信されることを示す。従って、いくつかのコンパイル命令は、種々の転送チャネル状態用の別の送信セッションを提供するために使用される。
【0051】
同様に、別のコンパイル命令は、種々の信頼性保護オーバヘッドのために含まれる。例えば、第1のコンパイル命令は第1の最大保護オーバヘッドレベルに対するメディアソースブロック及びFECデータのコンパイル/送信順を記述するのに使用され、第2の命令は第2の異なるFECオーバヘッドレベルの同一のメディアソースブロックに対して使用される。この第2のFECオーバヘッドレベルが第1のレベルより高い(低い)場合、従来技術においても示されるようなより多くのFEC記号又はパリティ記号が所定の量のメディアソース記号に追加される。
【0052】
次のステップS24は、先のステップS20〜ステップS23及び好ましくは図2のステップS12において提供及び生成される情報、テーブル及び命令をコンテナファイルに編成する。コンテナファイルは、要求クライアントへの送信のためにデータを識別、計算及び構成するために、メディアサーバにより必要とされる「生」メディアデータ、情報、命令及びメタデータの完全なセットを含む。その後、方法は終了する。
【0053】
図4は、本発明に係るメディアコンテナファイル1を示す概略図である。上述したように、コンテナファイル1は、複数のメディアソースファイル10、12、14のメタデータを含み、そのようなM個のファイルを図示する。ここで、M≧1である。各ファイル10、12、14のメディアデータは、複数のメディアソースブロック20、22、24に分割されると考えられる。図中では、そのようなQ1個のブロック20、22、24は、第1のメディアソースファイル10に対して示されている。ここでQ1≧1である。そのような各メディアソースブロック20、22、24は、ソース記号に分割されると考えられる。
【0054】
コンテナファイル1は、メディアデータを含むメディアソースブロック20、22、24に加え、信頼性保護を提供するためにメディアデータと関連して使用されるFEC冗長データの計算を簡単化する目的でメディアソースブロック20、22、24に適用されたソース記号区分の事前に生成された情報を含む区分情報セット30、32、34を含む。好適な一実現例において、各メディアソースブロックは、専用の区分情報セット30、32、34を含む。そのような場合、図中の情報セット30、32、34の数Nは、
である。
【0055】
区分情報30、32、34が適用可能なメディアソースブロック20、22、24と区分情報30、32、34との関係を提供する本発明の関係メタデータ40は、コンテナファイル1に更に提供される。図4は、ファイル1におけるメタデータ40の複数の異なる可能な場所を示す。第1の実施形態において、メタデータは関連するメディアソースブロック20、22、24と関連して格納される。従って、ファイル中のメディアソースブロック20、22、24の識別により、ソースブロック20、22、24の各メタデータ40の識別も可能になる。あるいは又はそれに加えて、メタデータ40は各区分情報30、32、34と共に格納される。各情報セット30、32、34は、特定の区分情報30、32、34が適用される関連するメディアソースブロック20、22、24の識別を可能にする結び付けられた関係メタデータ40を有する。コンテナファイル1が好適なファイルプロパティテーブル60を含む場合、関係メタデータ40はそのテーブルに提供される。そのような場合、メディアサーバは、ファイルプロパティテーブル60のみを調査して、メディアセッション中に使用する関連するメディアデータ及び区分データの場所を識別してもよい。更なる可能な一実現例において、関係メタデータ40は、コンテナファイル1の種々のヒントトラック50、52、54と関連して格納される。それらヒントトラックは、メディアセッションと関連してメディアサーバにより使用されるFEC計算及び/又はコンパイル命令を含む。そのような場合、各ヒントトラック50、52、54は、そのヒントトラック50、52、54の命令により実現可能なメディアセッションに必要とされるメタデータ40のみを含む必要がある。それら複数の可能な記憶場所の組合せが更に可能であり、本発明の範囲内である。
【0056】
本発明の特定の一実施形態によると、メディアコンテナファイル1は、インタリーブユニットであり、漸進的なダウンロード又はストリーミングに対して最適化される。それにより、マルチメディア表現全体は、いわゆる漸進的なダウンロード又はストリーミングにより要求クライアントに送信及びダウンロードされる。
【0057】
ISOに基づくメディアファイル形式[1][2][3]は、本発明のメディアコンテナファイルのファイル形式として採用されるのが有利である。別のコンテナファイル形式は、MP4ファイル形式、3GPファイル形式及びQuickTime形式を含む。
【0058】
ALC(Asynchronous Layered Coding)は、大規模スケーラブル高信頼コンテンツ配信プロトコルである。これは、任意のバイナリオブジェクトの高信頼マルチキャスト配信のための基本プロトコルであり、3GPP2のBCMCS(ブロードキャスト/マルチキャストサービス)及びOMA(Open Mobile Alliance)のBAC(Browser and Content)Broadcast(BCAST)ワーキンググループにおいてブロードキャスト/マルチキャストファイル配信のための必須のプロトコルとして採用された。
【0059】
FLUTE(File Delivery over Unidirectional Transport)は、ファイルの単一方向配信のためのプロトコルをALCに加えて構築及び規定し、3GPPのMBMS及びDVB−HのIPデータキャスト(IPDC)においてブロードキャスト/マルチキャストファイル配信のための必須のプロトコルとして最近採用された。ALC及びFLUTEの双方は、インターネット技術標準化委員会(IETF)により規定される。
【0060】
FLUTEは、ALCセッションにおいて配信されるファイルと関連付けられるメタデータを保持するFDT(File Delivery Table)を規定し、FDTの帯域内の配信及び更新に対する機構を提供する。これに対して、ALCはファイルメタデータの帯域外の配信に対する他の手段に依存する。OMAのBCASTは、通常ALCセッションの十分前にクライアントに配信される電子サービスガイド(ESG)を規定する。ファイルメタデータがACLセッション中に更新される必要がある場合、ESGのフラグメントはESG配信/更新チャネルを使用することにより更新される。
【0061】
ALC又はFLUTEを介して配信されるファイルは、ISOコンテナファイルに項目として格納される。Metaボックス及びその子ボックスにより、静的メディア(画像)及びSMIL表現等の種々のデータ項目をISOに基づくメディアファイルに格納できる。それらボックスにより、ファイル名及びパスを項目に関連付けることが可能になり、ISOに基づくメディアファイルのファイルディレクトリ構造を信号で知らせることができる。
【0062】
一般に、ファイルがALC/FLUTEを介して送出される前の第1のステップは、本発明に従ってそれらファイルをソースブロック及びソース記号に区分することである。区分は、FEC方式、対象パケットサイズ及び所望のFECオーバヘッドに依存してもよい。FEC符号化のソースブロック毎に、区分情報が事前に計算され、FEC方式に関する情報及びファイル分割情報と共にISOに基づくメディアファイルに格納される。
【0063】
ファイルの送信を容易にする次のステップは、区分情報を使用してメディアソースブロックからFEC記号を計算することを規定する命令をISOに基づくメディアファイルが含むようにすることである。更に、ISOに基づくメディアファイルは、ALC/FLUTEセッション(セッション記述プロトコルを使用する)及び項目をALC又はFLUTEパケットに埋め込む方法を記述するマルチキャスト/ブロードキャストサーバに対する命令を更に含むのが好ましい。
【0064】
一方ではファイル区分、他方ではファイルの配信に対するヒントトラックが互いに無関係に使用される。前者は、ヒントトラックの設計を助長し、例えば種々のFECオーバヘッドを有する別のヒントトラックが同一のFEC記号を再利用することを可能にする。それらは、ソース記号にアクセスする手段を更に提供する。しかし、サーバがヒントトラック命令に従う場合の複雑さを軽減するために、ヒントトラックは、項目のデータ範囲又はヒントサンプルにコピーされたデータを直接参照する。
【0065】
以下において、ISOに基づくメディアファイル形式の形態であり、ALC/FLUTEを介する送信に適応された本発明に係るコンテナファイルの更に詳細な実現例を提供する。しかし、これは本発明の単なる例示として考えられるべきであり、この例に対する明らかな変形例及び変更例は本発明の範囲内である。
【0066】
(ソースファイルの格納)
ALC/FLUTEを介する送信用のファイルは、コンテナファイルとして動作するISOに基づくメディアファイルの最上位のMetaボックス(「meta」)に項目として格納される。Item Locationボックス(「iloc」)は、各項目のファイルサイズと共にコンテナファイル内の各項目(メディアソースファイル)の実際の記憶場所を特定する。各項目のファイル名、コンテンツタイプ(MIMEタイプ)等は、Item Informationボックス(「iinf」)により提供される。
【0067】
(FD Item Informationボックス)
ソースファイルの区分に関する詳細は、FD Item Informationボックス(「fiin」)において提供される。そのボックスは、FDヒントトラックを採用するファイルに使用されるのが好ましく、また1つのみがMetaボックス(「meta」)に位置付けられるのが好ましい。これは以下のように定義される:
aligned(8) class FDItemInformationBox extends FullBox('fiin', version = 0, 0)
{
unsigned int(16) entry_count;
PartitionEntry[entry_count]partition_entries;
SessionGroupBox session_info;
GroupIdToNameBox group_id_to_name;
}
FD Item Informationボックスの各PartitionEntryは、特定のメディアソースファイルに対する特定のファイル区分及びメタデータに関する詳細を提供する。別の区分がISOファイルにおいて使用される場合、1つのソースファイルに対して複数のエントリを提供できる。全ての区分エントリは黙示的に番号を付けられ、通常、第1のエントリは番号1を有する。
【0068】
(区分エントリ)
ソースのPartition Entry(「paen」)は以下のように定義される:
aligned(8) class PartitionEntry extends Box('paen')
{
FilePartitionBox blocks_and_symbols;
}
これは、メディアソース区分を規定する1つのボックスを含むことができる。
【0069】
(File Partitionボックス)
File Partitionボックス(「fpar」)は、ソースファイルを識別し、そのファイルのソースブロック及び記号への区分を提供する。定義は以下の通りである:
aligned(8) class FilePartitionBox extends FullBox('fpar', version = 0, 0)
{
unsigned int(16) item_ID;
unsigned int(16) packet_payload_size;
unsigned int(16) FEC_encoding_ID;
unsigned int(16) FEC_instance_ID;
usingned int(16) max_source_block_length;
unsigned int(16) encoding_symbol_length;
unsigned int(16) max_number_of_encoding_symbols;
string scheme_specific_info;
unsigned int(16) entry_count;
for (i=1; i <= entry_count; i++)
{
unsigned int(16) block_count;
unsigned int(32) block_size;
}
}
セマンティックス:
item_IDは、ソースファイルのitem_IDを示す。2つ以上のFile InformationエントリのFile Partitionボックスの同一のitem_IDを使用することにより、ソースファイルの別の区分を提供できる。
【0070】
packet_payload_sizeは、区分アルゴリズムの対象FLUTE又はALCパケットペイロードサイズを与える。尚、UDPパケットペイロードはFLUTE又はALCヘッダを更に含むためより大きい。
【0071】
FEC_encoding_IDは、FEC符号化方式を識別する。ゼロ値は、「Null-FEC」[4]としても周知の「Compact No-Code FEC方式」等のデフォルト方式に対応する。値1は、「MBMS FEC」[5]に対応するのが好ましい。
【0072】
FEC_instance_IDは、Under-Specified FEC方式に使用されるFEC符号器のより特定的な識別を提供する。通常、この値はFully-Specified FEC方式に使用されない。Under-Specified FEC方式の更なる詳細は文献[4]を参照。
【0073】
max_source_block_lengthは、メディアソースブロック毎のソース記号の最大数を与える。
【0074】
encoding_symbol_lengthは、1つの符号化記号(ソース記号及びFECパリティ記号)のサイズ(バイト)を与える。1つの項目の全ての符号化記号は、長さが短い可能性のある最後の記号を除いて全て同一の長さを有するのが好ましい。
【0075】
max_number_of_encoding_symbolsは、文献[4]に規定されるFEC符号化ID129のソースブロックに対して生成される符号化記号の最大数を与える。
【0076】
scheme_specific_infoは、「FLUTEbis」における方式特有のオブジェクト転送情報(FEC−OTI方式特有の情報)のBase64で符号化されたヌルで終了する文字列である。情報の定義は、FEC符号化IDに依存する。
【0077】
entry_countは、ソースファイルの区分を提供する(block_count, block_size)の対のリストのエントリ数を提供する。ファイルの先頭から開始し、各エントリは、ファイルの次のセグメントがソースブロック及びソース記号に分割される方法を示す。
【0078】
block_countは、サイズblock_size(バイト)の連続するソースブロックの数を示す。記号サイズ(FEC Informationボックスで提供される)の倍数でないblock_sizeは、最後のソース記号がファイル項目に格納されていないパディングを含むことを示す。
【0079】
(項目情報ボックス)
ブロードキャスト/マルチキャストファイルダウンロードプロトコル(ALC/FLUTE)を使用して内部に埋め込まれた個別のメディアを送信するために、サーバはその個別のメディアに対応するメタデータを更に送信するのが好ましい。メタデータは、FLUTEがブロードキャストプロトコルとして使用される場合はFDTの一部として送出され、ALCがOMAのBCASTのESGと共に使用される場合はOMAのBCASTのESGの一部として送出される。
【0080】
メタデータ情報の一部は実行中に作成されてもよいため、FLUTE及びALCの双方に共通で固定のメタデータの一部に対するテンプレート構造は、項目情報エントリの第2のバージョンとして規定される。項目情報エントリのこのバージョンは、ソースファイル区分を有する項目に対する項目情報ボックスにおいて使用される。
【0081】
aligned(8) class ItemInfoEntry extends FullBox('infe', version = 1, 0)
{
unsigned int(16) item_ID;
unsigned int(16) item_protection_index;
unsigned int(32) content_length;
unsigned int(32) transfer_length;
string item_name;
string content_type;
string content_location;
string content_encoding;
string content_MD5;
unsigned int(8) entry_count;
for (i=1; i <= entry_count; i++)
{
unsigned int(32) group_id;
}
}
セマンティックス:
item_idは、プライマリリソース(例えば、「xml」ボックスに含まれる拡張マークアップ言語(XML))に対して0又は以下の情報が規定される項目のIDを含む。
【0082】
item_protection_indexは、非保護項目に対して0又はこの項目に適用される保護を規定する項目保護ボックスへの1で開始する指標(項目保護ボックスの第1のボックスは指標1を有する)を含む。
【0083】
content_lengthは、(非符号化)ファイルの全体の長さ(バイト)を与える。
【0084】
transfer_lengthは、(符号化)ファイルの全体の長さ(バイト)を与える。尚、コンテンツ符号化が適用されていない場合、転送の長さはコンテンツの長さと等しい(以下を参照)。
【0085】
item_nameは、項目の記号名、すなわち項目(ソースファイル)のファイル名を含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0086】
content_typeは、MIMEタイプの項目を有するUTF−8の文字で書かれたヌルで終了する文字列である。項目がコンテンツ符号化される場合(以下を参照)、MIMEタイプはコンテンツ復号化後の項目を参照する。
【0087】
content_locationは、HTTP/1.1[6]に規定されるようにファイルのURIを含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0088】
content_encodingは、バイナリファイルが符号化され、解釈される前に復号化される必要があることを示すために使用されるUTF−8の文字で書かれたヌルで終了する文字列である。値は、HTTP/1.1のコンテンツ符号化に対して規定される通りである。いくつかの可能な値は、「gzip」、「compress」及び「deflate」である。空文字列は、コンテンツ符号化がないことを示す。尚、項目は、コンテンツ符号化が適用された後に格納される。
【0089】
content_MD5は、ファイルのMD5ダイジェスト[6][7]を含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0090】
entry_countは、以下のリストのエントリの数を与える。
【0091】
group_IDは、ファイル項目が属するファイルグループを示す。
【0092】
全てのフィールドが採用されるのが好ましい。しかし、フィールドの対応する値が提供されていないことを示すために、ヌルで終了する文字列がヌルのみを含むことが可能である。ボックスへの今後の拡張により、追加のフィールドが最後に追加されてもよい。
【0093】
各項目に対するFile Informationボックスで提供される情報及びヒントトラックにより使用される項目のリストを考慮することにより、FDT又はESGに必要とされるファイルエントリが構成される。
【0094】
埋め込みメディアリソースのcontent_locationは、ISOに基づくメディアファイル形式[1][2]の第8.44.7節において規定されるURL(ユニバーサルリソースロケータ)形式を使用することにより参照されてもよい。
【0095】
(Session Groupボックス)
FDセッションは、各々がFDヒントトラックにより記述されるいくつかのFDチャネルを介して同時に送出できる。Session Groupボックスは、セッションのリスト、並びに各セッションに属する全てのメディアファイルグループ及びヒントトラックを含む。コンテナファイルに2つ以上のFDヒントトラックが存在する場合、1つのSession GroupボックスがFD Item Informationボックスに存在するのが好ましい。
【0096】
1つのセッショングループのみが随時処理されるべきである。セッショングループのリストされた第1のヒントトラックは、基本チャネルを特定する。メディアサーバがセッショングループ間の参照を有さない場合、通常、デフォルトの選択肢は第1のセッショングループである。ヒントトラックにより参照されるファイルを含む全てのファイルグループのグループIDは、ファイルグループのリストに含まれる。ファイルグループIDは、サーバによりFDTに含まれるファイルグループ名に変換される(Group ID To Nameボックスを使用して)。
【0097】
aligned(8) class SessionGroupBox 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_goupsは、セッショングループの数を特定する。
【0098】
entry_countは、セッショングループが準拠する全てのファイルグループを含む以下のリスト中のエントリの数を与える。セッショングループは、各ソースファイルの項目情報エントリにより特定されるようなリストされたファイルグループに含まれる全てのファイルを含む。セッショングループに対するFDTは、この構造でリストされるそれらグループのみを含むのが好ましい。
【0099】
group_IDは、セッショングループが準拠するファイルグループを示す。
【0100】
num_channels_in_session_groupsは、セッショングループのチャネルの数を特定する。num_channels_in_session_groupsの値は正数である。
【0101】
hint_track_IDは、特定のセッショングループに属するFDヒントトラックのトラックIDを特定する。1つのFDヒントトラックは、1つのLCT(Layered Coding Transport)チャネルに対応する。
【0102】
(Group ID To Nameボックス)
Group ID To Nameボックスは、ファイルグループ名を項目情報エントリにおいて使用されるファイルグループIDに関連付ける。
【0103】
aligned(8) class GroupIdToNameBox extends FullBox('gitn', version = 0, 0)
{
unsigned int(32) entry_count;
for (i=1; i<=entry_count; i++)
{
unsigned int(32) group_ID;
string group_name;
}
}
セマンティックス:
entry_countは、以下のリストのエントリの数を与える。
【0104】
group_IDは、ファイルグループを示す。
【0105】
group_nameは、対応するファイルグループ名を含むUTF−8の文字で書かれたヌルで終了する文字列である。
【0106】
(ヒントトラックの形式)
ヒントトラック構造は、複数のデータ形式のヒントサンプルをサポートするために一般化される。ヒントトラックサンプルは、適切なタイプのパケットヘッダを構築するのに必要な任意のデータを含み、更にパケットに属するデータのメディアソースブロックへのポインタを含む。
【0107】
(サンプルエントリの形式)
FDヒントトラックは、「fdp」のサンプル記述におけるエントリ形式を有するヒントトラック(メディアハンドラ「hint」)である。「fdp」は、File Delivery Protocolの省略形である。FDHintSampleEntryは、SampleDescriptionBox(「stsd」)に含まれ、以下の構文を有する。
【0108】
class FDHintSampleEntry() extends SampleEntry('fdp')
{
uint(16) hinttrackversion = 1;
uint(16) highestcompatibleversion = 1;
uint(16) partition_entry_ID;
uint(16) FEC_overhead;
box additionaldata[];
}
セマンティックス:
partition_entry_IDは、FD項目情報ボックスの区分エントリを示す。ゼロ値は、例えばFDTに対するこのサンプルエントリと関連付けられる区分エントリが存在しないことを示す。
【0109】
FEC_overheadは、ヒントサンプルにより使用される保護オーバヘッドの比率を示す固定の値8.8である。FEC_overheadを提供する目的は、メディアサーバがセッショングループ(及び対応するFDヒントトラック)を選択するのを助長するための特性を提供することである。
【0110】
フィールド「hinttrackversion」及び「highestcompatibleversion」は、ISOに基づくメディアファイル形式[1][2]の第10.2節に説明される「RtpHintSampleEntry」と同様の解釈を有する。time_scale_entryボックスが追加のデータとして提供されてもよい。提供されない場合、パケットのタイミングに対して指示が与えられない。
【0111】
FDT又はESGに必要とされるファイルエントリは、ヒントトラックの全てのサンプルエントリ及び上記item_IDにより参照される項目の対応するFile Metadata Informationボックスを確認することにより作成される。サンプルエントリがいずれのサンプルによっても参照されない場合、それらはヒントトラックに含まれない。
【0112】
(サンプルの形式)
ヒントトラックの各FDサンプルは1つ以上のFDパケットを生成する。各サンプルは、パケットを構成するための命令及びそれらパケットを送出する場合に必要とされる任意の追加のデータ(例えば、ソースファイル又はFECに対する項目に常駐するのではなく、サンプルにコピーされる符号化記号)の2つの領域を含む。尚、サンプルのサイズは、サンプルサイズテーブルから周知である。
【0113】
aligned(8) class FDsample extends Box('fdsa')
{
FDPacketBox packetbox[]
ExtraDataBox extradata;
}
FDサンプルのサンプル番号は、メディアサーバにより処理される順番を規定する。同様に、各FDサンプルのFDパケットボックスは、処理される順番で現れる。Time Scale EntryボックスがFD Hint Sample Entryに存在する場合、サンプル時間は規定され、デフォルトビットレートに対するパケットの相対的な送出時間を提供する。実際の送信ビットレートに依存して、サーバは線形時間スケーリングを適用してもよい。サンプル時間は、スケジューリング処理を簡単化する可能性があるが、それはメディアサーバが時宜を得てパケットを送出することに依存する。
【0114】
(パケットエントリの形式)
FDサンプルの各パケットは、以下の構造[8]〜[10]を有する:
aligned(8) class FDpacketBox extends Box('fdpa')
{
header_template LCT_header_info;
unsigned int(16) entrycount1;
dataentry header_extension_constructors[entrycount1];
unsigned int(16) entrycount2;
dataentry packet_constructors[entrycount2];
}
LCT_header_infoは、現在のFDパケットに対するLCTヘッダテンプレートを含む。
【0115】
entry_count1:以下のコンストラクタの数
header_extension_constructors:LCTヘッダ拡張を構成するために使用される構造体
entry_count2:以下のコンストラクタの数
packet_constructors:FECペイロードID及びソース記号をFDパケットに構成するために使用される構造体。
【0116】
(LCTヘッダテンプレートの形式)
class header_template
{
unsigned int(1) sender_current_time_present;
unsigned int(1) expected_residual_time_present;
unsigned int(1) session_close_bit;
unsigned int(1) object_close_bit;
unsigned int(4) reserved;
unsigned int(16) transport_object_identifier;
}
LCTヘッダテンプレートは、パケットのLCTヘッダを形成するためにメディアサーバにより使用される。尚、ヘッダの一部分はサーバポリシーに依存し、テンプレートに含まれない。更に、いくつかのフィールドの長さは、サーバにより割り当てられたLCTヘッダビットに依存する。サーバは、TOIの値を変更する必要がある可能性がある。
【0117】
(LCTヘッダ拡張コンストラクタの形式)
尚、メディアサーバはEXT_FDTが存在するかを確認することによりFDTを含むパケットを識別できる。
【0118】
aligned(8) class LCTheaderextension
{
unsigned int(8) header_extension_type;
unsigned int(8) header_extension_length;
unsigned int(8) header_extension_content[];
}
header_extension_lengthは、32ビットワードの倍数で表される。ゼロ値は、ヘッダがサーバにより生成されることを意味する。
【0119】
header_extension_contentは、header_extension_lengthと等しい項目数である。
【0120】
(パケットコンストラクタの形式)
種々のコンストラクタの形式が存在する。各コンストラクタは、繰り返しを容易にするために16バイトである。最初の1バイトは、結合を区別するためのものである。この構造体は、ISOに基づくメディアファイル形式[1][2]の第10.3.2節に基づく。
【0121】
aligned(8) class FDconstructor(type)
{
unsigned int(8) constructor_type = type;
}
aligned(8) class FDnoopconstructor extends FDconstructor(0)
{
unsigned int(8) pad[15];
}
aligned(8) class FDimmediateconstructor extends FDconstructor(1)
{
unsigned int(8) count;
unsigned int(8) data[count];
unsigned int(8) pad[14 - count];
}
aligned(8) class FDsampleconstructor extends FDconstructor(2)
{
signed int(8) trackrefindex;
unsigned int(16) length;
unsigned int(32) samplenumber;
unsigned int(32) sampleoffset;
unsigned int(16) bytesperblock = 1;
unsigned int(16) samplesperblock = 1;
}
aligned(8) class FDitemconstructor extends FDconstructor(3)
{
unsigned int(16) item_ID;
unsigned int(16) extent_index;
unsigned int(64) data_offset;
unsigned int(24) data_length;
}
aligned(8) class FDxmlboxconstructor extends FDconstructor(4)
{
unsigned int(64) data_offset;
unsigned int(32) data_length;
unsigned int(24) reserved;
}
(Extra Dataボックス)
FDヒントトラックの各サンプルは、Extra Dataボックスに格納された追加のデータを含んでもよい。
【0122】
aligned(8) class ExtraDataBox extends Box('extr')
{
bit(8) extradata[];
}
図5は、本発明に係るメディアセッション管理方法を示すフローチャートである。このメディアセッション管理は、ストリーミングサーバ又はダウンロードサーバ等のメディアサーバにおいて実行され、本発明のメディアコンテナファイルを使用する。方法は、メディアコンテナファイルが提供されるステップS30において開始する。このファイルの提供は、メディアサーバの記憶場所からコンテナファイルを取り出すことにより実現されるが、これは、サーバがコンテンツ提供器又は作成器からファイルを事前に受信していることを示す。あるいは、メディアサーバは、メディアデータに対する要求と関連してコンテンツ提供器からのコンテナファイルを命令又は受信できる。
【0123】
次のステップS31において、FEC冗長データは、少なくとも1つのメディアソースブロックを使用し、少なくとも1つのソースブロックと関連付けられる区分情報及びメタデータに基づいて計算される。この計算ステップS31において、Digital FountainのRaptorコーデック等のFECブロックコーデックが採用されるのが好ましく、それはメディアブロック毎に動作する。しかし、重畳FECコーデックが採用されてもよく、それは本発明の範囲内である。好適な一実現例において、FEC冗長記号のセットは、少なくとも1つのメディアソースブロックに対して生成されてもよい。このFEC記号セットは、メディアソースブロックのソース記号に基づいて計算された1つのFEC記号、好ましくは複数のFEC記号を含むことができる。メディアソースブロックに対して計算するFEC記号の数は、採用されるFECコーデックの制限によって規定されるか、メディアソースブロックのメディアソース記号の数の関数であるか、あるいはFECオーバヘッド等の他の基準により制限されてもよい。更に、メディアコンテナファイルに含まれる情報は、計算するFEC冗長データの量を特定できる。
【0124】
好適な一実現例において、メディアコンテナファイルは、このステップS31において使用されるFEC計算命令を更に含む。FEC記号の生成のためにFECコーデックに入力されるソース記号を選択する時に、それら命令は区分情報(及び区分情報を識別するのに使用されるメタ情報)と共に使用される。
【0125】
コンテナファイルがメディアソースファイルのメディアソースブロックへの分割の情報を更に含む場合、この分割情報は、FECデータ計算に使用される適正なソース記号を識別するために使用される。
【0126】
ステップS31で計算されるFEC記号の数は、メディアセッション中のその時点で許容される最大/最小のFECオーバヘッド等のローカル基準に基づいてメディアサーバにより判定される。あるいは、上述のように、FEC計算命令等のコンテナファイルに提供される情報は、所定のメディアソースブロックに対して計算されるFEC冗長データの量を特定する。
【0127】
ステップS31のFECデータの計算は、進行中のメディアセッション中リアルタイムで実行される。あるいは、メディアサーバは、実際のセッションの前にFECデータのリザーバを生成し、FECリザーバをコンテナファイル又はメモリに格納できる。事前に計算されたFECデータは、後続のメディアセッションにおいてコンテナファイルのメディアコンテンツと共に使用される。
【0128】
次のステップS32において、メディアデータパケットは、コンテナファイルのメディアソースブロックからメディアデータを抽出し、ステップS31で計算されるようなFEC冗長データを提供することによりコンパイルされる。メディアサーバは、メディアセッション中に送信するためにメディアデータの識別子を受信するのが好ましい。あるいは、コンテナファイルは、メディアソースの選択が必要ないように単一のメディアデータファイルのメディアデータのみを含んでもよい。いずれの場合においても、ファイルプロパティテーブル等のコンテナファイルに含まれる上述の情報は、メディアファイルの開始、すなわち送信が開始されるべき第1のメディアソースブロックを識別するために使用される。更に、コンテナファイルに含まれる更なる情報は、メディアデータ及びFECデータを組み合わせて、種々のクライアントに対する1つの無線チャネル又は複数のチャネルを介する無線送信に適応されたデータパケットに含める方法に関する命令として使用される。
【0129】
次のステップS33において、FEC信頼性保護を有するコンパイルされたメディアデータパケットは、好ましくはブロードキャスト又はマルチキャスト技術によりクライアントに送信され、クライアントにおいてメディアデータがレンダリングされる。メディアサーバの送信バッファが所定のレベルに到達すると、通常、パケット送信は開始される。しかし、メディアセッション中、他のパケットが送信される間、新しいデータパケットがコンパイルされて送信バッファに入力される。これを線L2により概略的に示す。
【0130】
メディアデータの編成及び生成されたコンテナファイル、並びに事前に計算された区分データの提供により、メディアセッション中のメディアサーバの処理要求が低減される。従って、これにより、サーバが実行中にソースブロック構成及び区分を実行する必要がないため、サーバの複雑さが軽減され、サーバに柔軟性が与えられる。
【0131】
その後、方法は終了する。
【0132】
図6は、図5のメディアセッション管理方法の追加のステップを示すフローチャートである。方法は、図5のステップS30から継続する。次のステップS40において、メディアサーバは、FECデータ計算のために採用するFECアルゴリズム又はコーデックを選択する。このFECアルゴリズムは、FECデータが計算される際に基づくメディアソースブロックを区分する時に使用されるFECアルゴリズムであるのが好ましい。従って、メディアコンテナファイルはこのFECアルゴリズム/コーデックの情報を含むの好ましく、これは選択ステップS40においてメディアサーバにより採用される情報である。
【0133】
FEC情報が複数の利用可能なFECアルゴリズムの識別子を含み、所定のメディアソースブロックが複数の種々の区分において利用可能である場合、メディアサーバは、FECデータを計算する時に使用するFECアルゴリズム及びブロック区分情報を選択するために、FECオーバヘッド容量及び/又はFEC計算命令を含む他の入力情報を使用するのが好ましい。
【0134】
その後、方法は図5のステップS31に継続し、選択されたFECアルゴリズムはFECデータを計算するために使用される。
【0135】
図7は、図4のセッション管理方法の追加のステップを示すフローチャートである。方法は、図5のステップS31から継続する。次のステップS50において、メディアセッションにおいてデータを送信するために現在採用できるFECオーバヘッド容量が判定される。この容量は、メディア送信のためにサーバに割り当て可能な帯域幅レベル、このメディア送信のために採用される無線記憶媒体に対する最小及び最大のビットレートレベル等に基づいて判定又は少なくとも推定される。実際には、従来技術において周知のデータ送信と関連してそのようなオーバヘッド容量を判定する任意の技術が、ステップS50において採用されてもよい。
【0136】
FECオーバヘッド容量が判定されると、次のステップS51は、判定されたオーバヘッド容量に基づいてコンパイル命令セットを選択する。メディアコンテナファイルは、所定のメディアコンテンツに使用されるコンパイル命令の複数の別のセットを含むが、種々のレベルのFECオーバヘッドを提供する。換言すると、基本的にそれら別のコンパイル命令は、メディアデータパケットをコンパイルする時にメディアデータに追加するFEC冗長データの量を規定する。許容されるFECオーバヘッドが大きくなると、より多くのFECデータが追加される。種々の別のコンパイル命令を有することにより、メディアサーバは、現在のオーバヘッドの制限を与えられる許容される最大のFEC保護を可能にするそれら命令を使用でき、それにより、単一のコンパイル命令のセットを使用する場合と比較して種々のクライアントでメディアデータを正常に受信及び復号化する機会が増加する。
【0137】
方法は、図5のステップS32に継続する。ステップS32において、メディアデータパケットは、ステップS51で選択されたコンパイル命令に基づいてメディアコンテンツデータ及び関連するFECデータからコンパイルされる。
【0138】
メディアコンテナファイルがファイルからブロックへの分割の情報、FECアルゴリズムの情報及び/又はファイルプロパティテーブル等の追加の情報を更に含む場合、メディアサーバは、データパケットの生成及び送信の際にその追加の情報を使用できる。
【0139】
例えば、メディアサーバにとって有用な追加のデータ、好ましくはMIMEタイプの情報、任意の符号化情報、サイズ情報等は、ファイルプロパティテーブルに含まれるか又は少なくとも公表される。好適な一実現例において、このプロパティテーブルは、メディアの抽出、データパケットのコンパイル及び送信と関連して有利な又は必要とされる情報を取得するためにメディアサーバによりアクセスされる単一情報又はルックアップソースを構成する。
【0140】
図8は、本発明の一実施形態に従って別のコンパイル命令の使用を示すために使用される本発明に係るメディアコンテナファイル1を示す概略図である。コンテナファイル1は、好ましくは複数のメディアソースブロックを含むメディアソースファイル10を含む。本実施形態において、ソースファイル10の各メディアソースブロックは関連する区分情報30を有する。この図示される例において、コンテナファイル1は、種々のFECオーバヘッドのコンパイル命令を含む3つのヒントトラック50、52、54を更に含む。例えば、10%の冗長オーバヘッドが望ましい場合に第1のヒントトラック50が使用され、第2のヒントトラック52は約12%のFECオーバヘッドを与え、第3のヒントトラック54は14%のFECオーバヘッドを与える。図中、文献[5]の付録Bにおいて提案されるソースブロック構成アルゴリズムが採用されている。
【0141】
区分情報30は、ソースファイル10のメディアソースブロックに基づいてFECデータ70を計算するためにFECコーデックにより採用される。ソースファイル10が複数のメディアソースブロックを含む場合、複数のFECデータセット又はリザーバ70、すなわち好ましくはメディアソースブロック毎にFECデータの1つのセットが計算される。
【0142】
第1のヒントトラック50が選択される場合、データパケット81、82、83、84の第1のストリーム(図中、メディアソースブロック毎及びFECブロック毎に1つのデータパケットのみが示される)が生成される。しかし、第2のヒントトラック52が使用される場合、データパケット91、92、93、94の第2のストリームが生成される。第1のストリーム80と比較して、第2のストリーム90はメディアソースブロック毎により大きなFECブロック、すなわちより多くのFEC冗長データを含む。しかし、各ソースブロックは2つのストリーム80、90に同一量のメディアデータを含む。
【0143】
図9は、本発明のメディアコンテナファイル1を生成又は使用する要素を示す通信ネットワークの概略図である。コンテンツサーバ100は、メディアソースデータを受信するか又はメディアソースデータへのアクセス権を有し、メディアコンテナファイル1を構成するコンテンツ提供器又は作成器を表す。このコンテナファイル1のコピーは、図において移動端末により表される種々のクライアント300、310、320に送信(マルチキャスト)されるFECデータ及びメディアを含むデータパケットをコンパイルするためにメディアセッションにおいてコンテナファイル1を使用するメディアサーバ200に送出される。
【0144】
図10は、本発明に係るメディアコンテンツサーバ100を示す概略ブロック図である。コンテンツサーバ100は、外部ユニットと通信するための機能性(送信機/受信機、変調器/復調器、符号器/復号器)を含むように構成される一般的な入出力(I/O)ユニット110を具備する。このI/Oユニット110は、特に入力メディアコンテンツを受信及びメディアコンテナファイルに対する要求を受信するように構成される。I/Oユニット110は、通信ネットワークにおいてそのようなコンテナファイルを他のサーバに送信する時にサーバ100により採用される。
【0145】
コンテンツサーバ100は、本発明のメディアコンテナファイルを作成するように構成されるコンテナファイル作成器160を更に具備する。サーバ100は、ファイル作成器160のメディアブロックマネージャ161によりメディアコンテナファイルに入力される少なくとも1つのメディアソースブロックを提供するように構成されるメディアブロック提供器130を更に具備する。メディアブロック提供器130は、外部メディアソース400、410からメディアコンテンツを受信するI/Oユニット110又は内部データ記憶装置120から少なくとも1つの入力ソースブロックを提供する。
【0146】
メディアソースブロックは、コンテンツサーバ100のブロック区分器140に転送される。この区分器140は、FECデータを計算する目的でソースブロックに適用されるFECアルゴリズムの情報に少なくとも部分的に基づいて、入力メディアソースブロックを通常は複数のそのようなソース記号である多数のソース記号に区分する。区分動作は、ソースブロックをソース記号に物理的に分割する必要があるとは限らない。それとは非常に対照的に、区分は、ソースブロックの種々の部分を種々のソース記号に割り当てることによる実質的な分割であってもよい。
【0147】
ソースブロックに適用され、ブロック区分に影響を与えるFECアルゴリズムは、メディアソースブロックに対して常に採用される事前定義済みの標準FECアルゴリズムであってもよい。あるいは、コンテンツサーバ100のブロック区分器140又は他のユニットは、複数の利用可能なそのようなアルゴリズムから使用する特定のFECアルゴリズムを選択する。この選択において、予想される最大のFECオーバヘッド等の種々の入力データが使用される。更なる一実施形態において、ブロック区分器140は、種々の別の利用可能なFECアルゴリズムの情報に基づいて所定のメディアソースブロックの複数の別の区分を実行する。例えば、コンテンツサーバ100がメディアサーバにおいて利用可能なFECアルゴリズムに関する知識を有する場合、ブロック区分器140は、FECアルゴリズム毎に別個のブロック区分を実行できる。
【0148】
ブロック区分器140は、メディアソースブロックに適用される特定のFECアルゴリズム又は方式に基づいてブロック区分を実行することに加え、メディアセッション中にメディアサーバにより採用されるデータパケットにソース記号を収めるように適応された区分を実行するように更に動作可能である。従って、UDPパケットサイズ等のパケットサイズの情報は、区分器140により採用可能である。
【0149】
区分器140により実行される特定のソースブロック区分の情報は、情報生成器150により生成される。上述したように、この情報は、メディアソースブロックのどのビットがどのソース記号に属するかを特定できるか、あるいはより小さいサイズのソース記号である最後のソース記号を除いて、ソースブロックの全てのソース記号に適用される記号サイズを規定できる。
【0150】
この場合、ブロック区分器140はメディアソースブロックの複数の別の区分を実行し、生成器150により生成される情報はそれら別のブロック区分に関するデータを含む。
【0151】
区分情報は、情報をメディアコンテナファイルに挿入するコンテナファイル作成器160の情報マネージャ162に生成器から転送される。
【0152】
ファイル作成器160のメタデータマネージャ163は、メタデータをコンテナファイルに提供する。このメタデータは、ブロックマネージャ161により編成されるメディアソースブロックと区分情報マネージャ162により編成される区分情報との関係を提供する。
【0153】
結果として得られるメディアコンテナファイルは、データ記憶装置120に少なくとも一時的に格納されるか、あるいはI/Oユニット110によりメディアサーバに送信される。
【0154】
コンテンツサーバ100のユニット110、130、140、150、160、161、162及び163は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット110〜163が全て、通信システムの1つのネットワークノードのコンテンツサーバ100において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、コンテンツサーバ100の種々のユニット110〜163が種々のネットワークノードに配置されてもよいが、上述したような意図された動作を実行する。
【0155】
図11は、図10のメディアブロック提供器130の一実施形態を更に詳細に示す概略ブロック図である。好適な一実現例において、入力メディアコンテンツは、例えばコンテンツサーバのデータ記憶装置又はI/Oユニットからメディアファイル提供器132により提供されるメディアソースファイルの形式である。メディアソースファイルは、ファイル提供器132によりメディアファイル分割器134に転送される。分割器134は、ソースファイルを1つ以上のソースブロックに分割する。分割器134は、このファイル分割を種々の情報又はパラメータに基づいて行なう。例えばファイル分割は、FEC冗長データの計算に適用されるFECアルゴリズムに基づいて少なくとも部分的に判定される。そのような場合、ファイル分割134は、そのようなFECアルゴリズムの情報へのアクセス権を有するのが好ましい。分割器134は、メディアソースファイルをN−1個のサイズが等しいメディアソースブロック及びN−1個のブロックより小さなサイズを有する可能性のある1つのメディアソースブロックに分割できる。
【0156】
分割情報生成器136は、ファイル分割器134に接続されて構成される。生成器136は、ファイル分割器134により判定され、可能性として実行されるファイル分割の情報を生成する。第1の実現例において、生成された情報は、異なるメディアソースブロックに属するメディアソースファイルのビットを特定できる。第2の実現例において、情報は、可能性としてより小さなサイズを有する最後のソースブロックを除くメディアソースブロックのサイズ(ビット又は記号サイズ)を特定する。そのような場合、メディアソースファイルの開始場所を認識すると、種々のメディアソースブロックはその(サイズ)分割情報を使用して識別される。
【0157】
分割情報マネージャ138は、情報生成器136からの分割情報をメディアコンテナファイルに編成するためにブロック提供器130において実現される。
【0158】
メディアブロック提供器130のユニット132〜138は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット132〜138が全て、メディアブロック提供器130において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、メディアブロック提供器130の種々のユニット132〜138がコンテンツサーバの他の場所に配置されてもよい。
【0159】
図12は、図10のコンテナファイル作成器160の一実施形態を更に詳細に示す概略ブロック図である。このファイル作成器160は、上述のメディアブロックマネージャ161、区分情報マネージャ162及びメタデータマネージャ163に加え、FEC情報マネージャ164を含む。このFEC情報マネージャ164は、コンテナファイルのメディアソースブロックに適用されるFECアルゴリズムの情報を生成し、コンテナファイルに編成する。コンテンツサーバのブロック区分器により実行されるブロック区分は、ブロック区分を実行する時にもそのようなFECアルゴリズム情報を使用する。従って、ブロック区分が実行された時に基づいたFECアルゴイズムの情報は、マネージャ164により生成され、コンテナファイルに含まれるのが好ましい。
【0160】
テーブルマネージャ165は、プロパティテーブルを生成し、コンテナファイルに含めるためにファイル作成器160に含まれてもよい。このプロパティテーブルは、ファイルタイプ、ファイルサイズ、ファイル記憶場所、ファイル暗号化、ファイル名/識別子等のメディアソースファイルの情報をコンテナファイルに含むことができる。更に、本発明の区分情報、ファイル分割情報及びメタデータは、テーブルマネージャ165により生成されたプロパティテーブルに含まれる。
【0161】
FEC命令マネージャ166は、コンテナファイルのメディアソースブロックに基づいてFECデータを生成する時にメディアサーバが従うFEC命令を生成するためにファイル作成器160に含まれる。それら命令は、特定のメディアソースブロックと関連付けられる区分情報と共に、FEC記号を計算するためにFECコーデックに入力されるソース記号を特定する。種々の別のFEC命令がマネージャ166により所定のソースブロックに対して提供される。ここで、FEC命令は異なるFECコーデック及び/又はFECオーバヘッドと関連して使用されるように適応される。
【0162】
ファイル作成器160のコンパイル命令マネージャ167は、コンパイル命令を生成し、コンテナファイルに挿入する。それら命令は、メディアソースブロックのメディアデータとソースブロック及び区分情報を使用して計算されるFECデータとをコンパイルするためにメディアサーバにより使用される情報を含む。マネージャ167は、ファイルのメディアコンテンツ毎に単一の命令又は命令のセットを生成できる。あるいは、種々のFECオーバヘッドに適応された種々のそのような命令、種々のFECデータタイプ及び/又はメディアセッションで採用される異なる数の無線通信チャネルがマネージャ167により提供され、コンテナファイルに編成される。
【0163】
コンテナファイル作成器160のユニット161〜167は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット161〜167が全て、コンテナファイル作成器160において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、コンテナファイル作成器160の種々のユニット161〜167がコンテンツサーバの他の場所に配置されてもよい。
【0164】
図13は、本発明に係るメディアセッションサーバ200を示す概略ブロック図である。このメディアサーバ200は、外部ユニットとの通信を実行するI/Oユニット210を具備する。このI/Oユニット210は、特にコンテンツサーバからのメディアファイルコンテナを要求及び受信するように構成される。更にI/Oユニット210は、種々のユーザクライアントからのメディアコンテンツに対する要求又は少なくともメディアコンテンツが送信されるべきクライアントの情報に対する要求を受信する。メディアサーバ200によりコンパイルされるデータパケットは、I/Oユニット210によりそれらクライアントに送信される。
【0165】
サーバ200は、現在のセッションで使用するメディアコンテンツファイルを提供するメディアファイル提供器220を具備する。このファイル提供器220は、I/Oユニット210によりコンテンツ作成器に送信される特定のコンテナファイルに対する要求を生成してもよい。あるいは、提供器220は、メディアサーバ220に提供されたデータ記憶装置250から事前に受信したコンテナファイルを取り出す。
【0166】
メディアサーバ200のFEC計算器又はコーデック240は、コンテナファイルに格納される少なくとも1つのメディアソースブロックに対するFEC冗長データを計算する。この計算手順において、FEC計算器240は、上述のFECアルゴリズムのうち任意のアルゴリズムを使用できる。好適な一実現例において、コンテナファイルは、選択肢がある場合に採用するFECアルゴリズムを計算器240に指示する。まずFEC計算器240は、入力メディアソースブロックに対する関連する区分情報を識別する。この識別手順において、ソースブロックに関連付けられ、コンテナファイルに提供されるメタデータは、計算器240により使用される。その後、計算器240は、FECデータを生成するためにFECアルゴリズム(コンテナファイルのFEC情報に基づいて選択される)が適用されるべきメディアソースブロックのそれら部分を識別するための区分情報を使用する。
【0167】
好適な一実施形態において、適正な入力ソース記号を識別し、実際のFECデータ計算を実行する場合、メディアコンテナファイルは、区分情報に加え計算器240により使用されるFEC計算命令を更に含む。更なる入力情報は、上述のFECアルゴリズム情報(使用する適正なFECアルゴリズムの選択を可能にする)及びファイル分割情報(適正なメディアソースブロックの識別を可能にする)であってもよい。
【0168】
データパケットコンパイラ230は、提供器220からのコンテナファイルに含まれるコンパイル命令を使用して、ファイルからメディアデータ及びFEC計算器からFECデータを抽出し、その抽出データを含むデータパケットを生成するのが好ましい。そのように生成されたデータパケットは、I/Oユニット210により送信される(I/Oユニット210からストリーム又はダウンロードされる)。
【0169】
種々のコンパイル命令は、所定のメディアコンテンツに対するファイルに含まれる。例えば、命令はチャネルに依存するか又は容量に依存する。前者の場合、利用可能な無線チャネルの数及び送信されるべき並列メディアストリームの数により、コンパイラ230が使用する実際のコンパイル命令が判定される。後者の場合、FEC容量推定器260は、セッション中に採用されるFECオーバヘッドの最大量を推定するためにサーバ200に含まれるのが好ましい。オーバヘッド容量がセッションにわたり変化するため、推定器260により実行されるオーバヘッドの推定はセッション中に動的に更新されるのが好ましい。セット選択器270は、使用するファイルにおいて利用可能な特定のコンパイル命令又はコンパイル命令の命令セットを選択するために推定器260からの容量推定値を使用する。パケットコンパイラ230は、メタデータ及びFECデータをデータパケットにコンパイルするためにこの命令(セット)を使用する。
【0170】
メディアサーバ200のユニット210、220、230、240、260及び270は、ソフトウェア、ハードウェア又はそれらの組合せとして実現又は提供されてもよい。ユニット210〜270が全て、通信システムの1つのネットワークノードのメディアサーバ200において実現されてもよい。あるいは、分散型実施形態も可能であり、本発明の範囲内である。そのような場合、メディアサーバ200の種々のユニット210〜270が種々のネットワークノードに配置されてもよいが、上述したような意図された動作を実行する。
【0171】
添付の請求の範囲に規定される本発明の範囲から逸脱せずに、本発明に対して種々の変形及び変更が行なわれてもよいことが当業者には理解されるだろう。
【0172】
(参考文献)
[1]ISO/IEC 14496-12:2005: "ISO base media file format"
[2]ISO/IEC 15444-12:2005: "ISO base media file format"
[3]国際公開第WO2005/039131号
[4]RFC 3695; Compact Forward Error Correction (FEC) Schemes、2004年2月
[5]3GPP TS 26.346 V7.0.0, 3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Multimedia Broadcast/Multicast Service (MBMS); Protocols and codecs、2006年6月
[6]RFC 2616; Hypertext Transfer Protocol - HTTP/1.1、1999年6月
[7]RFC 1864; The Content-MDS Header Field、1995年10月
[8]RFC 3926; FLUTE - File Delivery over Unidirectional Transport、2004年10月
[9]RFC 3450; Asynchrononous Layered Coding (ALC) Protocol Instantiation、2002年12月
[10]REC 3451; Layered Coding Transport (LCT) Building Block、2002年12月
【特許請求の範囲】
【請求項1】
メディアコンテナファイルを生成する方法であって、
−メディアデータを含む少なくとも1つのメディアソースブロックを提供するステップと、
−前記少なくとも1つのメディアソースブロックに適用される順方向誤り訂正(FEC)アルゴリズムの情報に少なくとも部分的に基づいて、前記少なくとも1つのメディアソースブロックを複数のソース記号に区分するステップと、
−前記区分を記述する区分情報を生成するステップと、
−前記少なくとも1つのメディアソースブロックを前記メディアコンテナファイルに編成するステップと、
−前記区分情報を前記メディアコンテナファイルに編成するステップと、
−前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを前記メディアコンテナファイルに提供するステップと、
を有することを特徴とする方法。
【請求項2】
前記少なくとも1つのメディアソースブロックを提供する前記ステップは、
−メディアソースファイルを提供するステップと、
−前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割するステップと、
−前記分割を記述する分割情報を生成するステップと、
−前記分割情報を前記メディアコンテナファイルに編成するステップと、
を有することを特徴とする請求項1記載の方法。
【請求項3】
前記分割ステップは、前記FECアルゴリズムの情報に少なくとも部分的に基づいて、前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割することを有することを特徴とする請求項2記載の方法。
【請求項4】
−前記FECアルゴリズムの情報を前記メディアコンテナファイルに提供するステップを更に有することを特徴とする請求項1から3のいずれか1項に記載の方法。
【請求項5】
−前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶場所情報を含むプロパティテーブルを前記メディアコンテナファイルに提供するステップを更に有することを特徴とする請求項1から4のいずれか1項に記載の方法。
【請求項6】
−前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づくFEC冗長データの計算を規定するFEC計算命令を生成するステップと、
−前記FEC計算命令を前記メディアコンテナファイルに編成するステップと、
を更に有することを特徴とする請求項1から5のいずれか1項に記載の方法。
【請求項7】
−データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータと前記FEC冗長データとのコンパイルを規定するコンパイル命令を生成するステップと、
−前記コンパイル命令を前記メディアコンテナファイルに編成するステップと、
を更に有することを特徴とする請求項6記載の方法。
【請求項8】
コンパイル命令を生成する前記ステップは、
−第1のレベルのFEC冗長オーバヘッドを有するデータパケットの第1のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第1のセットを生成するステップと、
−第2のレベルのFEC冗長オーバヘッドを有するデータパケットの第2のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第2のセットを生成するステップと、
を有することを特徴とする請求項7記載の方法。
【請求項9】
−メディアデータを含む少なくとも1つのメディアソースブロックを提供するように構成されるメディアブロック提供器と、
−前記少なくとも1つのメディアソースブロックに適用される順方向誤り訂正(FEC)アルゴリズムの情報に少なくとも部分的に基づいて、前記少なくとも1つのメディアソースブロックを複数のソース記号に区分するように構成されるメディアブロック区分器と、
−前記区分を記述する区分情報を生成するように構成される区分情報生成器と、
−前記少なくとも1つのメディアソースブロックを前記メディアコンテナファイルに編成するように構成されるメディアブロックマネージャと、
−前記区分情報を前記メディアコンテナファイルに編成するように構成される区分情報マネージャと、
−前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを前記メディアコンテナファイルに提供するように構成されるメタデータマネージャと、
を備えることを特徴とするメディアコンテンツサーバ。
【請求項10】
前記メディアブロック提供器は、
−メディアソースファイルを提供するように構成されるメディアファイル提供器と、
−前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割するように構成されるメディアファイル分割器と、
−前記分割を記述する分割情報を生成するように構成される分割情報生成器と、
−前記分割情報を前記メディアコンテナファイルに編成するように構成される分割情報マネージャと、
を備えることを特徴とする請求項9記載のメディアコンテンツサーバ。
【請求項11】
前記メディアファイル分割器は、前記FECアルゴリズムの情報に少なくとも部分的に基づいて、前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割するように構成される
ことを特徴とする請求項10記載のメディアコンテンツサーバ。
【請求項12】
−前記FECアルゴリズムの情報を前記メディアコンテナファイルに提供するように構成されるFEC情報マネージャを更に備える
ことを特徴とする請求項9から11のいずれか1項に記載のメディアコンテンツサーバ。
【請求項13】
−前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶場所情報を含むプロパティテーブルを前記メディアコンテナファイルに提供するように構成されるテーブルマネージャを更に備える
ことを特徴とする請求項9から12のいずれか1項に記載のメディアコンテンツサーバ。
【請求項14】
−i)前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づくFEC冗長データの計算を規定するFEC計算命令を生成し、ii)前記FEC計算命令を前記メディアコンテナファイルに編成する
ように構成されるFEC命令マネージャを更に備えることを特徴とする請求項9から13のいずれか1項に記載のメディアコンテンツサーバ。
【請求項15】
−i)データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令を生成し、ii)前記コンパイル命令を前記メディアコンテナファイルに編成する
ように構成されるコンパイル命令マネージャを更に備えることを特徴とする請求項14記載のメディアコンテンツサーバ。
【請求項16】
前記コンパイル命令マネージャは、i)第1のレベルのFEC冗長オーバヘッドを有するデータパケットの第1のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第1のセットを生成し、ii)第2のレベルのFEC冗長オーバヘッドを有するデータパケットの第2のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第2のセットを生成する
ように構成されることを特徴とする請求項15記載のメディアコンテンツサーバ。
【請求項17】
−少なくとも1つのメディアソースブロックと、
−前記少なくとも1つのメディアソースブロックに適用される順方向誤り訂正(FEC)アルゴリズムの情報に少なくとも部分的に基づいて実行される前記少なくとも1つのメディアソースブロックの複数のソース記号への区分を記述する区分情報と、
−前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータと、
を含むことを特徴とするメディアコンテナファイル。
【請求項18】
−メディアソースファイルの前記少なくとも1つのメディアソースブロックへの分割を記述する分割情報を更に含む
ことを特徴とする請求項17記載のメディアコンテナファイル。
【請求項19】
−前記FECアルゴリズムの情報を更に含むことを特徴とする請求項17又は18記載のメディアコンテナファイル。
【請求項20】
−前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶場所情報を含むプロパティテーブルを更に含むことを特徴とする請求項17から19のいずれか1項に記載のメディアコンテナファイル。
【請求項21】
−前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づくFEC冗長データの計算を規定するFEC計算命令を更に含むことを特徴とする請求項17から20のいずれか1項に記載のメディアコンテナファイル。
【請求項22】
−データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令を更に含むことを特徴とする請求項21記載のメディアコンテナファイル。
【請求項23】
−少なくとも1つのメディアソースブロック、区分情報及び前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを含むメディアコンテナファイルを提供するステップと、
−前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づいて順方向誤り訂正(FEC)冗長データを計算するステップと、
−前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することによりデータパケットをコンパイルするステップと、
−メディアセッション中に前記データパケットを少なくとも1つのユーザ端末に送信するステップと、
を有することを特徴とするメディアセッション管理方法。
【請求項24】
前記メディアコンテナファイルは、前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づくFEC冗長データの計算を規定するFEC計算命令を更に含み、前記計算ステップは、前記メタデータ、前記少なくとも1つのメディアソースブロック、前記区分情報及び前記FEC計算命令に基づいて前記FEC冗長データを計算することを有することを特徴とする請求項23記載の方法。
【請求項25】
前記メディアコンテナファイルは、メディアソースファイルの前記少なくとも1つのメディアソースブロックへの分割を記述する分割情報を更に含み、前記計算ステップは、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報と、前記分割情報と、に基づいて前記FEC冗長データを計算することを含む
ことを特徴とする請求項23又は24記載の方法。
【請求項26】
前記メディアコンテナファイルはFECアルゴリズム情報を更に含み、前記計算ステップは、
−前記FECアルゴリズム情報に基づいて複数の利用可能なFECアルゴリズムからFECアルゴリズムを選択するステップと、
−前記選択したFECアルゴリズムを使用し、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づいて前記FEC冗長データを計算するステップと
を有することを特徴とする請求項23から25のいずれか1項に記載の方法。
【請求項27】
前記メディアコンテナファイルは、データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを記述するコンパイル命令を更に含み、前記コンパイルステップは、前記コンパイル命令に基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルすることを含む
ことを特徴とする請求項23から26のいずれか1項に記載の方法。
【請求項28】
前記コンパイル命令は、各々が規定されたFEC冗長オーバヘッドと関連付けられる複数のコンパイル命令セットを含み、前記方法は、
−前記メディアセッションに対するFEC冗長オーバヘッド容量を推定するステップと、
−前記推定したFEC冗長オーバヘッド容量に基づいて前記複数のコンパイル命令セットからコンパイル命令セットを選択するステップとを含み、
前記コンパイルステップは、前記選択したコンパイル命令セットに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルすることを含む
ことを特徴とする請求項27記載の方法。
【請求項29】
前記メディアコンテナファイルは、前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶情報を含むプロパティテーブルを更に含み、前記コンパイルステップは、前記プロパティテーブルに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルすることを含む
ことを特徴とする請求項23から28のいずれか1項に記載の方法。
【請求項30】
−少なくとも1つのメディアソースブロック、区分情報及び前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを含むメディアコンテナファイルを提供するためのメディアファイル提供器と、
−前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づいて順方向誤り訂正(FEC)冗長データを計算するように構成されるFEC計算器と、
−前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することによりデータパケットをコンパイルするために、前記メディアファイル提供器及び前記FEC計算器に接続されて構成されるデータパケットコンパイラと、
−前記データパケットコンパイラによりコンパイルされた前記データパケットを少なくとも1つのユーザ端末にメディアセッション中に送信するために前記データパケットコンパイラに接続されて構成される送信機と、
を備えることを特徴とするメディアセッションサーバ。
【請求項31】
前記メディアコンテナファイルは、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づく前記FEC冗長データの計算を規定するFEC計算命令を更に含み、前記FEC計算器は、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報と、前記FEC計算命令とに基づいて前記FEC冗長データを計算するように構成される
ことを特徴とする請求項30記載のメディアセッションサーバ。
【請求項32】
前記メディアコンテナファイルは、メディアソースファイルの前記少なくとも1つのメディアソースブロックへの分割を記述する分割情報を更に含み、前記FEC計算器は、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報と、前記分割情報とに基づいて前記FEC冗長データを計算するように構成される
ことを特徴とする請求項30又は31記載のメディアセッションサーバ。
【請求項33】
前記メディアコンテナファイルはFECアルゴリズム情報を更に含み、前記FEC計算器は、i)前記FECアルゴリズム情報に基づいて複数の利用可能なFECアルゴリズムからFECアルゴリズムを選択し、ii)前記選択したFECアルゴリズムを使用し、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づいて前記FEC冗長データを計算する
ように構成されることを特徴とする請求項30から32のいずれか1項に記載のメディアセッションサーバ。
【請求項34】
前記メディアコンテナファイルは、データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを記述するコンパイル命令を更に含み、前記データパケットコンパイラは、前記コンパイル命令に基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルするように構成される
ことを特徴とする請求項30から33のいずれか1項に記載のメディアセッションサーバ。
【請求項35】
前記コンパイル命令は、各々が規定されたFEC冗長オーバヘッドと関連付けられる複数のコンパイル命令セットを含み、
前記メディアセッションサーバは、
−前記メディアセッションに対するFEC冗長オーバヘッド容量を推定するように構成されるFEC容量推定器と、
−前記FEC容量推定器により推定した前記FEC冗長オーバヘッド容量に基づいて前記複数のコンパイル命令セットからコンパイル命令セットを選択するために前記FEC容量推定器に接続されて構成されるセット選択器と、
を更に備え、
前記データパケットコンパイラは、前記セット選択器により選択した前記コンパイル命令セットに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルするように構成される
ことを特徴とする請求項34記載のメディアセッションサーバ。
【請求項36】
前記メディアコンテナファイルは、前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶情報を含むプロパティテーブルを更に含み、前記データパケットコンパイラは、前記プロパティテーブルに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルするように構成される
ことを特徴とする請求項30から35のいずれか1項に記載のメディアセッションサーバ。
【請求項1】
メディアコンテナファイルを生成する方法であって、
−メディアデータを含む少なくとも1つのメディアソースブロックを提供するステップと、
−前記少なくとも1つのメディアソースブロックに適用される順方向誤り訂正(FEC)アルゴリズムの情報に少なくとも部分的に基づいて、前記少なくとも1つのメディアソースブロックを複数のソース記号に区分するステップと、
−前記区分を記述する区分情報を生成するステップと、
−前記少なくとも1つのメディアソースブロックを前記メディアコンテナファイルに編成するステップと、
−前記区分情報を前記メディアコンテナファイルに編成するステップと、
−前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを前記メディアコンテナファイルに提供するステップと、
を有することを特徴とする方法。
【請求項2】
前記少なくとも1つのメディアソースブロックを提供する前記ステップは、
−メディアソースファイルを提供するステップと、
−前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割するステップと、
−前記分割を記述する分割情報を生成するステップと、
−前記分割情報を前記メディアコンテナファイルに編成するステップと、
を有することを特徴とする請求項1記載の方法。
【請求項3】
前記分割ステップは、前記FECアルゴリズムの情報に少なくとも部分的に基づいて、前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割することを有することを特徴とする請求項2記載の方法。
【請求項4】
−前記FECアルゴリズムの情報を前記メディアコンテナファイルに提供するステップを更に有することを特徴とする請求項1から3のいずれか1項に記載の方法。
【請求項5】
−前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶場所情報を含むプロパティテーブルを前記メディアコンテナファイルに提供するステップを更に有することを特徴とする請求項1から4のいずれか1項に記載の方法。
【請求項6】
−前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づくFEC冗長データの計算を規定するFEC計算命令を生成するステップと、
−前記FEC計算命令を前記メディアコンテナファイルに編成するステップと、
を更に有することを特徴とする請求項1から5のいずれか1項に記載の方法。
【請求項7】
−データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータと前記FEC冗長データとのコンパイルを規定するコンパイル命令を生成するステップと、
−前記コンパイル命令を前記メディアコンテナファイルに編成するステップと、
を更に有することを特徴とする請求項6記載の方法。
【請求項8】
コンパイル命令を生成する前記ステップは、
−第1のレベルのFEC冗長オーバヘッドを有するデータパケットの第1のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第1のセットを生成するステップと、
−第2のレベルのFEC冗長オーバヘッドを有するデータパケットの第2のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第2のセットを生成するステップと、
を有することを特徴とする請求項7記載の方法。
【請求項9】
−メディアデータを含む少なくとも1つのメディアソースブロックを提供するように構成されるメディアブロック提供器と、
−前記少なくとも1つのメディアソースブロックに適用される順方向誤り訂正(FEC)アルゴリズムの情報に少なくとも部分的に基づいて、前記少なくとも1つのメディアソースブロックを複数のソース記号に区分するように構成されるメディアブロック区分器と、
−前記区分を記述する区分情報を生成するように構成される区分情報生成器と、
−前記少なくとも1つのメディアソースブロックを前記メディアコンテナファイルに編成するように構成されるメディアブロックマネージャと、
−前記区分情報を前記メディアコンテナファイルに編成するように構成される区分情報マネージャと、
−前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを前記メディアコンテナファイルに提供するように構成されるメタデータマネージャと、
を備えることを特徴とするメディアコンテンツサーバ。
【請求項10】
前記メディアブロック提供器は、
−メディアソースファイルを提供するように構成されるメディアファイル提供器と、
−前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割するように構成されるメディアファイル分割器と、
−前記分割を記述する分割情報を生成するように構成される分割情報生成器と、
−前記分割情報を前記メディアコンテナファイルに編成するように構成される分割情報マネージャと、
を備えることを特徴とする請求項9記載のメディアコンテンツサーバ。
【請求項11】
前記メディアファイル分割器は、前記FECアルゴリズムの情報に少なくとも部分的に基づいて、前記メディアソースファイルを前記少なくとも1つのメディアソースブロックに分割するように構成される
ことを特徴とする請求項10記載のメディアコンテンツサーバ。
【請求項12】
−前記FECアルゴリズムの情報を前記メディアコンテナファイルに提供するように構成されるFEC情報マネージャを更に備える
ことを特徴とする請求項9から11のいずれか1項に記載のメディアコンテンツサーバ。
【請求項13】
−前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶場所情報を含むプロパティテーブルを前記メディアコンテナファイルに提供するように構成されるテーブルマネージャを更に備える
ことを特徴とする請求項9から12のいずれか1項に記載のメディアコンテンツサーバ。
【請求項14】
−i)前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づくFEC冗長データの計算を規定するFEC計算命令を生成し、ii)前記FEC計算命令を前記メディアコンテナファイルに編成する
ように構成されるFEC命令マネージャを更に備えることを特徴とする請求項9から13のいずれか1項に記載のメディアコンテンツサーバ。
【請求項15】
−i)データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令を生成し、ii)前記コンパイル命令を前記メディアコンテナファイルに編成する
ように構成されるコンパイル命令マネージャを更に備えることを特徴とする請求項14記載のメディアコンテンツサーバ。
【請求項16】
前記コンパイル命令マネージャは、i)第1のレベルのFEC冗長オーバヘッドを有するデータパケットの第1のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第1のセットを生成し、ii)第2のレベルのFEC冗長オーバヘッドを有するデータパケットの第2のメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令の第2のセットを生成する
ように構成されることを特徴とする請求項15記載のメディアコンテンツサーバ。
【請求項17】
−少なくとも1つのメディアソースブロックと、
−前記少なくとも1つのメディアソースブロックに適用される順方向誤り訂正(FEC)アルゴリズムの情報に少なくとも部分的に基づいて実行される前記少なくとも1つのメディアソースブロックの複数のソース記号への区分を記述する区分情報と、
−前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータと、
を含むことを特徴とするメディアコンテナファイル。
【請求項18】
−メディアソースファイルの前記少なくとも1つのメディアソースブロックへの分割を記述する分割情報を更に含む
ことを特徴とする請求項17記載のメディアコンテナファイル。
【請求項19】
−前記FECアルゴリズムの情報を更に含むことを特徴とする請求項17又は18記載のメディアコンテナファイル。
【請求項20】
−前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶場所情報を含むプロパティテーブルを更に含むことを特徴とする請求項17から19のいずれか1項に記載のメディアコンテナファイル。
【請求項21】
−前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づくFEC冗長データの計算を規定するFEC計算命令を更に含むことを特徴とする請求項17から20のいずれか1項に記載のメディアコンテナファイル。
【請求項22】
−データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを規定するコンパイル命令を更に含むことを特徴とする請求項21記載のメディアコンテナファイル。
【請求項23】
−少なくとも1つのメディアソースブロック、区分情報及び前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを含むメディアコンテナファイルを提供するステップと、
−前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づいて順方向誤り訂正(FEC)冗長データを計算するステップと、
−前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することによりデータパケットをコンパイルするステップと、
−メディアセッション中に前記データパケットを少なくとも1つのユーザ端末に送信するステップと、
を有することを特徴とするメディアセッション管理方法。
【請求項24】
前記メディアコンテナファイルは、前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づくFEC冗長データの計算を規定するFEC計算命令を更に含み、前記計算ステップは、前記メタデータ、前記少なくとも1つのメディアソースブロック、前記区分情報及び前記FEC計算命令に基づいて前記FEC冗長データを計算することを有することを特徴とする請求項23記載の方法。
【請求項25】
前記メディアコンテナファイルは、メディアソースファイルの前記少なくとも1つのメディアソースブロックへの分割を記述する分割情報を更に含み、前記計算ステップは、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報と、前記分割情報と、に基づいて前記FEC冗長データを計算することを含む
ことを特徴とする請求項23又は24記載の方法。
【請求項26】
前記メディアコンテナファイルはFECアルゴリズム情報を更に含み、前記計算ステップは、
−前記FECアルゴリズム情報に基づいて複数の利用可能なFECアルゴリズムからFECアルゴリズムを選択するステップと、
−前記選択したFECアルゴリズムを使用し、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づいて前記FEC冗長データを計算するステップと
を有することを特徴とする請求項23から25のいずれか1項に記載の方法。
【請求項27】
前記メディアコンテナファイルは、データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを記述するコンパイル命令を更に含み、前記コンパイルステップは、前記コンパイル命令に基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルすることを含む
ことを特徴とする請求項23から26のいずれか1項に記載の方法。
【請求項28】
前記コンパイル命令は、各々が規定されたFEC冗長オーバヘッドと関連付けられる複数のコンパイル命令セットを含み、前記方法は、
−前記メディアセッションに対するFEC冗長オーバヘッド容量を推定するステップと、
−前記推定したFEC冗長オーバヘッド容量に基づいて前記複数のコンパイル命令セットからコンパイル命令セットを選択するステップとを含み、
前記コンパイルステップは、前記選択したコンパイル命令セットに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルすることを含む
ことを特徴とする請求項27記載の方法。
【請求項29】
前記メディアコンテナファイルは、前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶情報を含むプロパティテーブルを更に含み、前記コンパイルステップは、前記プロパティテーブルに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルすることを含む
ことを特徴とする請求項23から28のいずれか1項に記載の方法。
【請求項30】
−少なくとも1つのメディアソースブロック、区分情報及び前記少なくとも1つのメディアソースブロックと前記区分情報との関係を提供するメタデータを含むメディアコンテナファイルを提供するためのメディアファイル提供器と、
−前記メタデータ、前記少なくとも1つのメディアソースブロック及び前記区分情報に基づいて順方向誤り訂正(FEC)冗長データを計算するように構成されるFEC計算器と、
−前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することによりデータパケットをコンパイルするために、前記メディアファイル提供器及び前記FEC計算器に接続されて構成されるデータパケットコンパイラと、
−前記データパケットコンパイラによりコンパイルされた前記データパケットを少なくとも1つのユーザ端末にメディアセッション中に送信するために前記データパケットコンパイラに接続されて構成される送信機と、
を備えることを特徴とするメディアセッションサーバ。
【請求項31】
前記メディアコンテナファイルは、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づく前記FEC冗長データの計算を規定するFEC計算命令を更に含み、前記FEC計算器は、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報と、前記FEC計算命令とに基づいて前記FEC冗長データを計算するように構成される
ことを特徴とする請求項30記載のメディアセッションサーバ。
【請求項32】
前記メディアコンテナファイルは、メディアソースファイルの前記少なくとも1つのメディアソースブロックへの分割を記述する分割情報を更に含み、前記FEC計算器は、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報と、前記分割情報とに基づいて前記FEC冗長データを計算するように構成される
ことを特徴とする請求項30又は31記載のメディアセッションサーバ。
【請求項33】
前記メディアコンテナファイルはFECアルゴリズム情報を更に含み、前記FEC計算器は、i)前記FECアルゴリズム情報に基づいて複数の利用可能なFECアルゴリズムからFECアルゴリズムを選択し、ii)前記選択したFECアルゴリズムを使用し、前記メタデータと、前記少なくとも1つのメディアソースブロックと、前記区分情報とに基づいて前記FEC冗長データを計算する
ように構成されることを特徴とする請求項30から32のいずれか1項に記載のメディアセッションサーバ。
【請求項34】
前記メディアコンテナファイルは、データパケットのメディアストリームを形成するために、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データのコンパイルを記述するコンパイル命令を更に含み、前記データパケットコンパイラは、前記コンパイル命令に基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルするように構成される
ことを特徴とする請求項30から33のいずれか1項に記載のメディアセッションサーバ。
【請求項35】
前記コンパイル命令は、各々が規定されたFEC冗長オーバヘッドと関連付けられる複数のコンパイル命令セットを含み、
前記メディアセッションサーバは、
−前記メディアセッションに対するFEC冗長オーバヘッド容量を推定するように構成されるFEC容量推定器と、
−前記FEC容量推定器により推定した前記FEC冗長オーバヘッド容量に基づいて前記複数のコンパイル命令セットからコンパイル命令セットを選択するために前記FEC容量推定器に接続されて構成されるセット選択器と、
を更に備え、
前記データパケットコンパイラは、前記セット選択器により選択した前記コンパイル命令セットに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルするように構成される
ことを特徴とする請求項34記載のメディアセッションサーバ。
【請求項36】
前記メディアコンテナファイルは、前記メディアコンテナファイル内の前記少なくとも1つのメディアソースブロックの記憶情報を含むプロパティテーブルを更に含み、前記データパケットコンパイラは、前記プロパティテーブルに基づいて、前記少なくとも1つのメディアソースブロックのメディアデータ及び前記FEC冗長データを抽出することにより前記データパケットをコンパイルするように構成される
ことを特徴とする請求項30から35のいずれか1項に記載のメディアセッションサーバ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−199974(P2012−199974A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−119049(P2012−119049)
【出願日】平成24年5月24日(2012.5.24)
【分割の表示】特願2008−549452(P2008−549452)の分割
【原出願日】平成19年1月4日(2007.1.4)
【出願人】(598036300)テレフオンアクチーボラゲット エル エム エリクソン(パブル) (2,266)
【Fターム(参考)】
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2012−119049(P2012−119049)
【出願日】平成24年5月24日(2012.5.24)
【分割の表示】特願2008−549452(P2008−549452)の分割
【原出願日】平成19年1月4日(2007.1.4)
【出願人】(598036300)テレフオンアクチーボラゲット エル エム エリクソン(パブル) (2,266)
【Fターム(参考)】
[ Back to top ]