(57)【特許請求の範囲】
【請求項１】
サーバが複数のクライアントにビデオ・プログラムを送信するビデオ・オンデマンド・システム用のストリーム・マージ方法において、
前記ビデオ・プログラムに関する複数のクライアントからの要求に応答して、ルート・チャネルを最も早い要求を行ったクライアントからの要求に応じて確立し、サブチャネルをその後の要求を行ったクライアントの要求に対応して確立する第１のステップを有し、
前記第１のステップが、
前記サブチャネルがマージされる前記ルート・チャネルの集合をサーチして、前記サブチャネルの開始時刻と前記集合内の各ルート・チャネルの開始時刻との差分値の中で、当該差分値が最小となるルート・チャネルであって、当該差分値が再生される前記ビデオ・プログラムの全長の半分未満であるという条件を満足するルート・チャネルを捜す第１のサブステップと、
前記条件を満たすルート・チャネルが存在する場合に、当該ルート・チャネルがマージすることになる子孫チャネルの集合をサーチして前記サブチャネルがマージされることになる親チャネルを捜す際、前記サブチャネルの開始時刻と前記子孫チャネルの集合内の各チャネルの開始時刻との差分値の中で最小となる第１の親チャネルであって、その差分値が、前記第１の親チャネルの開始時刻と前記第１の親チャネルが直接的にマージされることになる第２の親チャネルの開始時刻との差分値より小さいという条件を満足する前記第１の親チャネルを親チャネルとする第２のサブステップとを備え、
さらに、前記確立されたチャネルのそれぞれを使用している前記クライアントの数の変動をモニターし、該モニターの対象であるチャネルを使用する前記クライアントの数がゼロではない場合に前記確立されたチャネルを維持し、前記モニターの対象であるチャネルを使用する前記クライアントの数がゼロになる場合に前記確立されたチャネルをクローズする第２のステップを有する、ストリーム・マージ方法。
【請求項２】
クライアントからの再生開始要求またはプログラム・ジャンプ要求に応答して、前記ルート・チャネルおよび前記サブチャネルを確立する、請求項１に記載のストリーム・マージ方法。
【請求項３】
前記ルート・チャネルと前記サブチャネルがマージ・ツリー構造を形成する、請求項１に記載のストリーム・マージ方法。
【請求項４】
前記第２のステップが、
前記確立された各チャネルを使用しているクライアントの数をカウント・パラメータとして示す第３のサブステップと、
前記確立された各チャネルおよびそのサブチャネルのマージ、ジャンプ、または停止のイベントの発生に応答して、前記カウント・パラメータの値を減らす第４のサブステップと、
前記カウント・パラメータの値がゼロになる場合に前記サーバが前記確立されたチャネルをクローズする第５のサブステップと、
を含む、請求項１に記載のストリーム・マージ方法。
【請求項５】
前記カウント・パラメータの値がゼロではない場合に前記確立されたチャネルが前記サーバ側で維持され、マージ、ジャンプ、または停止の前記イベントを送信した前記クライアントがもはや前記確立されたチャネル上で再生している前記ビデオ・プログラムを受信しなくなる、請求項４に記載のストリーム・マージ方法。
【請求項６】
時間ｔにおける前記クライアントの要求が開始要求である場合に、開始時刻パラメータがｔになるように設定され、オブジェクト・オフセット・パラメータが前記サブチャネル内で０になるように設定される、請求項２に記載のストリーム・マージ方法。
【請求項７】
時間ｔにおける前記クライアントの要求がジャンプ要求であり、前記ジャンプ要求のオブジェクト・オフセット時間がｓである場合に、開始時刻パラメータがｔになるように設定され、オブジェクト・オフセット・パラメータが前記サブチャネル内でｓになるように設定され、前記ビデオ・プログラムが時間ｔで再生され、前記クライアントによってすでに受信されている前記確立されたチャネル上で停止操作が実行される、請求項２に記載のストリーム・マージ方法。
【請求項８】
コンピュータ・システム上で実行されたときに、請求項１ないし７のいずれかに記載の方法を実行するよう前記コンピュータ・システムに指示するための、コンピュータ可読ストレージ・メディア上に保管されたコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、チャネル・マージ方法に関し、詳細には、通信ネットワーク内でビデオ・ストリームを配信する複数のチャネルのマージを使用することによる複数のクライアントへの最適化マルチキャスト配信に関する。
【背景技術】
【０００２】
インターネットの爆発的な発展と、コンピュータのパワーの増大により、クライアントが即時視聴または将来の視聴のためにいつでもメディア・ファイル（ビデオ、オーディオ、データ、・・・など）を要求することができるビデオ・オンデマンド（ＶＯＤ）と呼ばれるクラスのアプリケーションに対する関心が増大している。しかし、ビデオ・オンデマンドは新たな課題、すなわち、サーバ帯域幅およびネットワーク帯域幅の莫大な消費という課題を提示する。伝統的に、各要求は専用ユニキャスト・ストリームによって供され、ユニキャスト・ベースのＶＯＤシステムのコストは膨大である。チャネル・マージ技術の出現はＶＯＤサービス用の新品モデルを生み出し、その目標は、特定のオブジェクト・ビデオを要求している複数のクライアントに２つまたはそれ以上のストリームを同時に受信させることにより、それらのクライアントを満足させるために必要なサーバ帯域幅を削減することである。クライアントは即時視聴のためにデータを受信し保管するので、サーバは、マルチキャストにより２人以上のユーザに同時に１つのビデオ・オブジェクトを供し、したがって、ネットワーク帯域幅とサーバ帯域幅の両方を削減することができる。
【０００３】
Ｗａｎｊｉｕｍ  Ｌｉａｏ他による「Ｔｈｅ  ｓｐｌｉｔ  ａｎｄ  ｍｅｒｇｅ  （ＳＡＭ）  ｐｒｏｔｏｃｏｌ  ｆｏｒ  ｉｎｔｅｒａｃｔｉｖｅ  ｖｉｄｅｏ−ｏｎ−ｄｅｍａｎｄ  ｓｙｓｔｅｍｓ」（Ｉｎｆｏｃｏｍ  ’９７．  Ｓｉｘｔｅｅｎｔｈ  Ａｎｎｕａｌ  Ｊｏｉｎｔ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｆ  ｔｈｅ  ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｏｃｉｅｔｉｅｓ．  Ｄｒｉｖｉｎｇ  ｔｈｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｖｏｌｕｔｉｏｎ．、Ｐｒｏｃｅｅｄｉｎｇｓ  ＩＥＥ  Ｋｏｂｅ，  Ｊａｐａｎ  ７−１１  Ａｐｒｉｌ  １９９７、Ｌｏｓ  Ａｌａｍｉｔｏｓ，  ＣＡ，  ＵＳＡ，  ＩＥＥ  Ｃｏｍｐｕｔ．  Ｓｏｃ．，  ＵＳ，  ７  Ａｐｒｉｌ  １９９７  （１９９７−０４−０７）、１３４９〜１３５６ページ、ＸＰ０１０２５１９５８  ＩＳＢＮ：  Ｏ−８１８６−７７８０−５）は、マルチキャスト操作をサポートし、ユーザの対話要求を満足するためにユニキャスト対話ストリームを使用するビデオ・オンデマンド・システムを教示している。
【０００４】
Ｅ．  Ｂｏｍｍａｉａｈ、Ｋ．  Ｇｕｏ、Ｍ．  Ｈｏｆｍａｎｎ、Ｓ．  Ｐａｕｌによる「Ｄｅｓｉｇｎ  ａｎｄ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ａ  ｃａｃｈｉｎｇ  ｓｙｓｔｅｍ  ｆｏｒ  ｓｔｒｅａｍｉｎｇ  ｍｅｄｉａ  ｏｖｅｒ  ｔｈｅ  Ｉｎｔｅｒｎｅｔ」（Ｒｅａｌ−Ｔｉｍｅ  Ｔｅｃｈｎｏｌｏｇｙ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓ  Ｓｙｍｐｏｓｉｕｍ，  ２０００．  ＲＴＡＳ  ２０００．  Ｐｒｏｃｅｅｄｉｎｇｓ．,  ［Ｏｎｌｉｎｅ］  ３１  Ｍａｙ  ２０００  （２０００−０５−３１）、１１１〜１２１ページ、ＸＰ００２２８３１０６）は、参照カウントがバッファ内のパケットに関連付けられ、その参照カウントが特定のパケットを消費する予定の消費者の数に等しい、ガーベッジ・コレクション機能を備えたビデオ・オンデマンド・システムを教示している。
【０００５】
既存のチャネル・マージ方法は、スタティック・ブロードキャスト（static
broadcast）、マージ・ツリー構築（merge tree construction）、およびイベント・ドリブン（event driven）という３つのタイプに分類することができる。Ｓｋｙｓｃｒａｐｅｒによって例示されるスタティック・ブロードキャストは、指定の期間および長さを備えた複数のチャネルで、要求したオブジェクトの複数セグメントをブロードキャストする。スタティック・ブロードキャストの利点は、その単純さと、非常に混雑する環境で比較的効率が良いことである。しかし、システムの負荷が大きくないかまたは種々のオブジェクトの人気がその厳密なリソース割振りのために分散しているときに、スタティック・ブロードキャストのパフォーマンスは不十分である。Ｄｙａｄｉｃによって例示されるマージ・ツリー構築は、新規ユーザが到着したときにマージ・ツリーを動的に構築し、ツリーのノードがチャネルを表す。チャネルは、ユーザによって本当に必要とされるまで割り振られない。この方法は、アイドル・チャネル・リソースの浪費を排除することにより、スタティック・ブロードキャストの欠点を克服する。しかし、マージ・ツリーは新規ユーザの加入時期によって排他的に決定されるので、ＶＣＲのような機能、すなわち、ランダム・ストップ（random
stop）、一時停止、早送り／後送り（fast/back forward）などを直接サポートしない。ＳＲＭＴ（単純到達可能マージ・ターゲット（Simple
Reachable Merge Target））およびＣＴ（最接近ターゲット（Closest Target））によって例示されるイベント・ドリブンは、クライアントが再生イベント、停止イベント、ジャンプ・イベント、またはマージ・イベントの表示をサーバに送信するときにクライアントが加入しなければならない１組のチャネルを動的に決定する。各クライアント用のマージ・パスはユーザ対話に応じて動的に調整されるので、ＶＣＲのような機能はこの方法によってサポートされる。
【０００６】
２つのチャネルをマージする方法について、図１、図２、および図３に併せて以下に説明する。
【０００７】
ステップ１では、ＶＯＤサーバ１は、クライアントＡからビデオ・プログラムを再生するための要求を受信し、その要求に応じて、要求されたビデオ・プログラムをチャネルＳ６上でクライアントＡに送信する。
【０００８】
ステップ２では、クライアントＢから何らかの時間（Ｔ）後にクライアントＡの要求と同じＶＯＤ要求を受信すると、ＶＯＤサーバ１は、チャネルＳ１１を作成し、チャネルＳ１１およびチャネルＳ６上でビデオ・プログラムをＶＯＤサーバ１から受信するための準備をするようクライアントＢに通知する。
【０００９】
ステップ３では、ＶＯＤサーバ１は、チャネルＳ１１上でそのビデオ・プログラムをその開始ポイント（ａ）からクライアントＢに送信し、クライアントＢはそれを受信し、その間に、クライアントＢは、クライアントＡと同期してチャネルＳ６上で受信し、ＶＯＤサーバ１から連続的に送信されたビデオ・プログラムの後続部分を保管する。
【００１０】
ステップ４では、ＶＯＤサーバ１は、チャネルＳ６をチャネルＳ１１の親チャネル（すなわち、チャネルＳ１１がマージすることになるチャネル）と見なす。チャネルＳ１１上でクライアントＢによって受信されたビデオ・プログラムが、チャネルＳ６上でそれが受信し保管するビデオ・プログラムの開始ポイント（ｂ）に到達すると、すなわち、もう１つの時間Ｔが経過すると、チャネルＳ１１はチャネルＳ６にマージされる。ＶＯＤサーバ１は、チャネルＳ１１をクローズすることになり、チャネルＳ１１上でクライアントＢにビデオ・プログラムを送信するのを停止する。この時点で、クライアントＢには、ポイント（ｂ）からポイント（ｃ）までのビデオ・プログラムが保管される。チャネルＳ１１（サブビデオ・ストリーム）がその親チャネルＳ６にマージされた後、他のいかなるクライアントもサブチャネルＳ１１（すなわち、チャネルＳ１１のサブチャネル）を使用していない場合、サブチャネルＳ１１は終了されることになる。
【００１１】
ステップ５では、チャネルＳ１１がチャネルＳ６にマージされた後、クライアントＢがチャネルＳ６上で受信し続け、ＶＯＤサーバ１から送信されたビデオ・プログラムの後続部分をポイント（ｃ）から保管する間に、クライアントＢはＦＩＦＯ方式でそのローカル・メモリに保管されたビデオ・プログラムをポイント（ｂ）から読み取って再生し、クライアントＢでのビデオ・プログラムの再生を続行できるようにする。
【００１２】
チャネル・マージ用のイベント・ドリブン方法はマルチキャスト・チャネルを制御するための最も柔軟な方法であるが、このタイプの既存の方法は明白な欠点を有する。チャネルがすでにその親チャネルにマージしているかまたは停止イベントあるいはジャンプ・イベントのために取り消されたときにそのチャネルが除去される場合、この除去されたチャネルのサブチャネルに加入しているクライアントは、加入していたチャネルを変更しなければならない。たとえば、ＣＴ方式は単に、依然としてシステム内にある以前のビデオ・ストリーム内の最新ビデオ・ストリーム・チャネルを次にマージすべきターゲットとして選択するだけであり、追加の新規サブチャネルがまったく作成されていない場合でも、ＣＴによって計算されたマージ・ターゲットが必ず到達可能であるわけではない。その理由は、その後のチャネルによって到達可能になる前に、ターゲット・ストリーム・チャネル自体がそのターゲット・チャネルとマージ可能であるからである。この場合、その後のストリーム・チャネルは、ＣＴアルゴリズムを使用することにより、もう一度、新規マージ・ターゲットを選択しなければならない。さらに、ランダム・ストップ、一時停止、早送りなどのターゲット・ストリーム・チャネルの操作は、その後のストリーム・チャネルがマージすることも不可能にし、それらがその新規親チャネルを再選択することを強制することになる。
【００１３】
影響を受けたクライアントにマージ・ツリーの変更を通知するために、ビデオ・サーバは、このようなクライアントのそれぞれに積極的に通知を送信しなければならない。これは、以下のような不利な結果をもたらす可能性がある。
１．通知の数は影響を受けたクライアントの数および予期しないチャネル停止イベントの頻度に比例するので、ビデオ・サーバからクライアントへの逆通知はビデオ・サーバの負荷を大幅に増加する可能性がある。
２．クライアントは、クライアントが予期せずに影響を受ける可能性を増加する、インターネットの不明領域からの着信接続を受け入れる準備ができていなければならない。
３．逆通知は、特定の構成を備えたファイアウォールを通過できない可能性がある。たとえば、ファイアウォール内のクライアントが、ファイアウォール外のビデオ・サーバに保管されたビデオ・クリップを視聴しようと試みる場合、サーバは、そのクライアントへの通知の伝送を開始できなくなる。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明は、請求項１に記載のＶＯＤシステム用のチャネル・マージ方法と、他の請求項に記載の対応する装置およびコンピュータ・プログラムとを提供する。
【課題を解決するための手段】
【００１５】
好ましくは、すべての「チャネル・マージ・イベント」は最下位レベルのサブチャネルからルート・チャネルへの方向に進行し、したがって、クライアントが使用しているチャネルが除去されるケースは一切発生しない。停止イベントが直接発生する場合でも、あるチャネルを（そのチャネルのサブチャネルの形で）使用するすべてのクライアントが明示的にそれをリリースするまで、そのチャネルは除去されなくなる。したがって、逆通知は回避され、あるクライアントの振る舞いは他のクライアントに影響しなくなり、ＶＯＤサーバとネットワークの両方の負荷が削減される。これに対して、ＶＣＲのような機能、たとえば、再生、停止、シーク（早送り／後送り）などは、この用法によって本質的にサポートされる。というのは、マージ・ツリーは、クライアントが開始したイベントが発生したときに動的に構築されて調整され、各クライアント用のマージ・パスは、マージ・ツリーに基づいて動的に調整されるからである。
【００１６】
本発明のもう１つの主な利点は、ＶＯＤサーバを制御するための方法がＨＴＴＰの要求／応答モードと互換性があり、したがって、ＨＴＴＰ上で容易に実現できることである。ＨＴＴＰはインターネット上でアプリケーション・データを交換するための重要なプロトコルであり、Ｗｅｂサービスの出現は、インターネットベースのアプリケーションがデータ伝送のためにできるだけＨＴＴＰに依存しなければならない傾向をさらに強くする。加えて、ほとんどのファイアウォールは不本意ながらＨＴＴＰ以外の一般トラフィックを通過させる。
【００１７】
本発明の前述の利点およびその他の特徴は、添付図面に併せて以下の詳細な説明からより明らかになるであろう。
【発明を実施するための最良の形態】
【００１８】
特に明記されない限り、以下に述べる開始、停止、ジャンプ、マージなどのすべての操作は、同じビデオ・プログラム（オブジェクト）が再生されるチャネルに関して実行される。
【００１９】
図１は、サーバ１と複数のクライアント４とを有するマルチキャスト・ネットワークを示している。マルチキャスト・ネットワークは、ＶＯＤサーバ１と、インターネット２と、ファイアウォール３と、複数のクライアント４とを有し、ＶＯＤサーバ１とクライアント４はインターネット２およびファイアウォール３により互いに通信する。本発明では、クライアント４は、ビデオ・クリップに関する再生、停止、一時停止、早送り／後送りなどのＶＣＲのような機能の操作を実行するために、ファイアウォール３およびインターネット２によりＶＯＤサーバ１に要求を送信する。
【００２０】
図１のＶＯＤサーバ１とクライアント４との間で行われる要求／応答について、図４に併せて以下に説明する。
【００２１】
図４は、図１のＶＯＤサーバ１とクライアント４との間で行われる要求／応答のタイミング図である。
【００２２】
図４では、各メッセージは実行すべきアクションのメッセージ・タイプを含み、それはパラメータのリストで指定される。ここでは、現在、オープン、再生、一時停止、マージ、およびクローズという５つのメッセージ・タイプが定義されている。クライアントによって送信される各メッセージごとに、サーバは応答メッセージを返送することになる。
【００２３】
ステップ（１）では、ＶＯＤサーバ１にオープン・メッセージを送信することにより、クライアント４はＶＯＤサーバ１とのセッションを作成し、オープン・メッセージは、ＶＯＤサーバ１上の要求されたビデオ・ファイル（ビデオ・プログラム）を一意的に識別するためのビデオＩＤを含む。セッションが正常に作成された場合、ＶＯＤサーバ１は、マルチキャスト・アドレスおよびポート番号などのチャネル情報を含む応答メッセージをクライアント４に返送することになり、クライアント４は、そのチャネル情報に応じて要求したビデオ・プログラムを受信することができる。
【００２４】
ステップ（２）では、クライアント４は、ビデオ・プログラムの再生を開始することまたは一時停止状態から再開することを要求するために再生メッセージを送信する。ビデオ・プログラムの指定の位置をサーチするために、再生メッセージ内のパラメータとしてオフセットを指定することができる。応答メッセージは、要求したプログラムを受信するようクライアント４に指示する情報など、クライアント４に関する追加情報を含むことができる。
【００２５】
ステップ（３）では、クライアント４がチャネルのマージを検出すると、クライアント４はＶＯＤサーバ１にマージ・メッセージを送信する（当然のことながら、ＶＯＤサーバ１は、チャネル制御ユニット２０などのそのコンポーネントを使用してチャネルを計算することにより、チャネル・マージ・イベントの発生を導出することもできる）。ＶＯＤサーバ１は、使用されていないチャネルをクローズし、クライアント４が加入しなければならない追加チャネルを示す応答メッセージを返送することになる。
【００２６】
ステップ（４）では、クライアント４は、ビデオ・プログラムを再生しながらデータ伝送を一時的に停止するために一時停止メッセージをＶＯＤサーバ１に送信することができ、ＶＯＤサーバ１は対応する応答を行う。
【００２７】
ステップ（５）では、クライアント４は、ＶＯＤサーバ１とのセッションを明示的にクローズするためにクローズ・メッセージをＶＯＤサーバ１に送信することができ、ＶＯＤサーバ１は対応する応答を行う。
【００２８】
前述の要求および通知メッセージをすべて様々なイベントにモデル化する場合、ＶＯＤサーバ１に関係する４つのタイプのイベント、すなわち、「開始イベント」、「ジャンプ・イベント」、「停止イベント」、および「マージ・イベント」が存在する。これらのイベントはすべて、前述の５つのタイプのメッセージ、すなわち、オープン、再生、一時停止、マージ、およびクローズにより操作することができる。
【００２９】
クライアント４がオブジェクト（ビデオ・プログラム）に関する要求を送信すると、開始イベントが発生する、すなわち、クライアント４は時間「ｔ」でビデオ・クリップを再生することを要求する（再生メッセージを使用する）。クライアント４がオブジェクトに関する早送りまたは後送り要求を送信すると、ジャンプ・イベントが発生する。すなわち、クライアント４は、時間「ｔ＋ｓ」または「ｔ−ｓ」からビデオ・プログラムを再生するための要求を送信し、その場合、「ｓ」は時間「ｔ」に対してジャンプすべきオブジェクト（すなわち、要求したビデオ・プログラムの他の部分）のオフセット時間である。この時点で、ＶＯＤサーバ１は、時間ｔ−ｓからビデオ・プログラムを再生するために新規チャネルを作成し（再生メッセージを使用する）、その間に、時間「ｔ」からビデオ・プログラムを再生するチャネルをクローズする（以下に詳述する通り、クローズ・メッセージを使用する）。クライアント４がもはやオブジェクトを必要としなくなる、すなわち、ビデオ・プログラムが再生されるチャネルがクローズされる（クローズ・メッセージを使用する）と、停止イベントが発生する。本発明の背景技術の部分で説明したチャネル・マージ方法の場合など、クライアント４が視聴していた最後のチャネル対が正常にマージしたマージ・ポイントにクライアント４が到達する（マージ・メッセージおよびクローズ・メッセージを使用する）、すなわち、図２の開始ポイント（ｂ）がマージ・ポイントになると、マージ・イベントが発生する。
【００３０】
再生、停止、一時停止、早送り／後送りなどのＶＣＲのような機能の操作を実現するために、本発明はチャネル・マージ装置４０を提供する。
【００３１】
本発明によるチャネル・マージ装置４０の具体的な構造について、図５に併せて次に説明する。
【００３２】
図５は、本発明によるチャネル・マージ装置４０の構造を示す図である。
【００３３】
本発明によるチャネル・マージ装置４０は、ＶＯＤサーバ１内に配置され、複数のクライアントから特定のビデオ・プログラムに関する要求を受信し、その要求に応答してルート・チャネル（Ｓ１）と少なくとも１つのサブチャネル（Ｓ１１）とを作成するためのチャネル選択ユニット１０であって、前記ルート・チャネル（Ｓ１）は最も早い要求を行ったクライアントの要求に応じて作成され、前記複数のサブチャネル（Ｓ１１）のそれぞれはその後の要求を行ったクライアントの要求に応答して作成され、チャネル・マージ・プロセスにおいてサブチャネルに関して後述すべき条件式（１）および（２）を満足する親チャネルをさらにシークするチャネル選択ユニット１０と、クライアント４の要求とチャネル選択ユニット１０の選択結果に応じてチャネルの作成、マージ、およびクローズなどの操作を実行するためのチャネル制御ユニット２０とを有する。
【００３４】
加えて、前述のチャネル・マージ装置４０は、ＶＯＤサーバ１内に配置される代わりに、ＶＯＤサーバ１に動作可能に接続することができる。これに対して、チャネル選択ユニット１０とチャネル制御ユニット２０は、チャネル選択ユニット１０およびチャネル制御ユニット２０に対応する機能を実施するためにコンピュータ内のＲＯＭあるいはＲＡＭまたはその他のストレージ・メディア（図示せず）に保管された実行可能プログラムを実行するために、コンピュータ内のＣＰＵなどの単一ユニットにすることができる。
【００３５】
チャネル制御ユニット２０はカウント・ユニット２２をさらに有し、これは、チャネル制御ユニット２０の制御機能を実施するためにカウント・パラメータ（ｒｅｆ＿ｎｕｍ）によって各チャネルを使用するクライアント４の数にマークを付けるものである。前記各チャネルとそのサブチャネルに対しマージ・イベント、ジャンプ・イベント、または停止イベントが発生すると、カウント・ユニット２２はカウント・パラメータの値を減らし、カウント・パラメータの値がゼロである場合、カウント・パラメータのその値がゼロであるチャネルがＶＯＤサーバ１側でクローズされる。
【００３６】
カウント・パラメータの値がゼロではない場合、そのチャネルはＶＯＤサーバ１側で維持され、マージ・イベント、ジャンプ・イベント、または停止イベントを実行したクライアントはもはや、そのチャネル上で再生されたプログラムを受信しなくなる。
【００３７】
本発明では、ＶＯＤサーバ１内のチャネル選択ユニット１０は、図３に示すように複数のクライアントからの特定のビデオ・プログラムに関する要求に応答してルート・チャネル（Ｓ１）と少なくとも１つのサブチャネル（Ｓ１１）を作成し、前記ルート・チャネル（Ｓ１）は最も早い要求を行ったクライアント（クライアントＡなど）の要求に応じて作成され、複数のサブチャネル（Ｓ１１）（および、たとえば、Ｓ５とＳ６も含む）のそれぞれはその後の要求を行ったクライアントの要求に応答して作成され、ルート・チャネルＳ１と複数のサブチャネルＳ１１（およびＳ５とＳ６など）はツリー構造を形成する。確かに、前述の要求はいずれも、ＶＯＤ条件を満足するものである。
【００３８】
前述のチャネルはいずれも、クライアント４の要求に基づいてＶＯＤサーバ１からマルチキャスト・ストリームを転送し、各チャネルのマルチキャスト・ストリームはすべてのクライアント４によって受信することができる。各クライアント４は多くても２つのチャネルを同時に受信し、そのうちの１つはクライアント４自体のために開始されるが、もう１つは前のクライアントのために開始されたものであり、たとえば、そのオブジェクトを要求する第１のクライアントはチャネルＳ１（図３に示す通り）からビデオ・プログラムを受信するだけであり、第２のクライアントはチャネルＳ２およびＳ１からビデオ・プログラムを同時に受信し、Ｓ１はＳ２（図３に示す通り）の親チャネルとして選択される。すべてのクライアントは、受信したビデオ・プログラムをローカル・ストレージ（図示せず）上に保管できなければならない。作成したチャネルごとに、ＶＯＤサーバ１は、本発明のチャネル制御ユニット２０により、そのチャネルを使用するクライアント４の数の変動をモニターする。モニター対象のチャネルを使用するクライアント４の数がゼロではない場合、そのチャネルは維持され、モニター対象のチャネルを使用するクライアント４の数がゼロである場合、すなわち、いかなるクライアント４もそのチャネルを使用していない場合、ＶＯＤサーバ１は、本発明のチャネル制御ユニット２０によりそのチャネルをクローズする。
【００３９】
ここでは、ＶＯＤサーバ１内のチャネル制御ユニット２０は、それ自体の計算によるかまたはチャネル・マージが発生したクライアント４からのメッセージを受信することにより、２つのチャネル（ビデオ・ストリーム）のマージを検出する。すべてのサブチャネルがそれぞれのルート・チャネル（同じビデオ・プログラム用に作成された第１のチャネル）にマージしてしまうまで、マージ・プロセスは継続する。ここでは、ビデオ・プログラムの長さは無限であると想定する。
【００４０】
本発明によるチャネル・マージ方法について、添付図面に関連して以下に説明する。
【００４１】
もう一度、図３を参照すると、図３はチャネル・マージ・ツリーの概略図である。各ノードはチャネルを表し、特定のビデオ・プログラム用に作成された第１のチャネルはルート・チャネルとして定義される。上位レベルのチャネルは下位レベルの親チャネルとして定義され、対照的に、下位レベルは上位レベルのチャネルのサブチャネルとして定義される。図３に示す通り、Ｓ１はルート・チャネルであり、Ｓ６はＳ１１の親チャネルであり、Ｓ１１はＳ６のサブチャネルであり、チャネルＳ６、Ｓ１０、およびＳ１１はＳ５の子孫チャネル（posterity channel）の集合である。
【００４２】
ＶＯＤサーバ１内のチャネル制御ユニット２０が、クライアント４の要求（チャネルの開始またはジャンプ）に基づいて、チャネルＳ１１と想定される新規チャネルを作成した場合、チャネル選択ユニット１０は直ちにチャネルＳ１１用の親チャネルＳ６をシークする。親チャネルＳ６が見つかった場合、親チャネル６が返され、見つからなかった場合、「親チャネルを見つけることができない」というメッセージが返される。
【００４３】
前述の操作を実行する方法は以下の通りである。
【００４４】
ステップ１：  以下の式（１）を使用することにより、チャネルＳ１１がおそらくマージすることになるアクティブ・ルート・チャネルの集合からＳ１などの最も近いルート・チャネルを見つける。
【００４５】
ｍｉｎ（Ｓ１１．ｓｔａｒｔ＿ｔｉｍｅ−Ｓ１．ｓｔａｒｔ＿ｔｉｍｅ）＜ｏｂｊｅｃｔ＿ｌｅｎｇｔｈ／２    （１）
【００４６】
式中、ｍｉｎ（Ｓ１１．ｓｔａｒｔ＿ｔｉｍｅ−Ｓ１．ｓｔａｒｔ＿ｔｉｍｅ）は、チャネルＳ１１の開始時刻（Ｓ１１．ｓｔａｒｔ＿ｔｉｍｅ）とルート・チャネルの集合内の各ルート・チャネルの開始時刻（Ｓ１．ｓｔａｒｔ＿ｔｉｍｅ）との差分値のうちの最小値を示し、ｏｂｊｅｃｔ＿ｌｅｎｇｔｈ／２は再生されるビデオ・プログラムの全長（合計時間）の半分を示し、開始時刻（ｓｔａｒｔ＿ｔｉｍｅ）はこのチャネルの開始時刻を示す。したがって、上記の式は、チャネルＳ１１の開始時刻とルート・チャネルの集合内の特定のルート・チャネルＳ１の開始時刻との差分値のうちの最小値が、再生されるビデオ・プログラムの全長（合計時間）の１／２より小さいことを意味する。この場合、ルート・チャネルＳ１は、そのサブチャネルＳ１１によって到達可能であると見なされ、チャネルＳ１１のルート・チャネルＳ１として動作することができ、そうではない場合、または開始時刻間の差分値が再生されるビデオ・プログラムの全長（合計時間）の１／２より大きい場合、このルート・チャネルは到達不能であると見なされ、したがって、「ルート・チャネルを見つけることができない」というメッセージが返され、チャネルＳ１１は新規ルート・チャネルと見なされる。
【００４７】
前述の条件を使用することにより、有効なルート・チャネルＳ１が見つかった場合、この方法は以下のステップ２に移行する。
【００４８】
ステップ２：  ルート・チャネルＳ１の子孫チャネルの集合がＳとして定義される場合、ここに記載した子孫チャネルは、その直接的な親チャネルがルート・チャネルＳ１であるサブチャネルＳ５と、チャネルＳ５のサブチャネルＳ６とを含む。ここでは、チャネルＳ１１はチャネルＳ６のサブチャネルとして定義され、これに対して、チャネルＳ１１がチャネルＳ５の子孫チャネルであることも把握することができ、残りは類推によって推定される。以下の式（２）を使用することにより、チャネルＳ６は集合Ｓ内で見つかる（その場合、チャネルＳ６はチャネルＳ１１の親チャネルであり、チャネルＳ６とＳ１１はいずれも子孫チャネル集合Ｓ内にあり、ルート・チャネルＳ１の子孫チャネルである）。
【００４９】
ｍｉｎ（Ｓ１１．ｓｔａｒｔ＿ｔｉｍｅ−Ｓ６．ｓｔａｒｔ＿ｔｉｍｅ）＜Ｓ６．ｓｔａｒｔ＿ｔｉｍｅ−Ｓ５．ｓｔａｒｔ＿ｔｉｍｅ    （２）
【００５０】
上記の式は、チャネルＳ１１がマージすることになる親チャネルＳ６がチャネルＳ１１について見つかることを意味し、この親チャネルＳ６は、チャネルＳ１１の開始時刻と親チャネル候補Ｓ６の開始時刻との差分値のうちの最小値は親チャネルＳ６の開始時刻と親チャネルＳ６の親チャネルＳ５の開始時刻との差分値より小さいという条件を満足しなければならない。
【００５１】
前述の条件を満足するチャネルＳ６が存在する場合、チャネルＳ６が次のマージの際にチャネルＳ１１の親チャネルとして返される。そうではない場合、または上記の条件を満足するチャネルがまったく見つからない場合、ルート・チャネルＳ１がチャネルＳ１１の親チャネルとして返される。
【００５２】
明らかに、上記の条件のみが満足される場合、チャネルＳ１１がその親チャネルＳ６にマージする前に親チャネルＳ６が親チャネルＳ６の親チャネルＳ５にマージしないことが保証される。
【００５３】
すなわち、チャネルＳ６がその親チャネルＳ５にマージするときに、Ｓ１０およびＳ１１など、チャネルＳ６の各サブチャネルはすでにその親チャネルＳ６にマージしている。したがって、計算によるかまたはクライアント４からメッセージを受信することにより、チャネルＳ６がその親チャネルＳ５にマージしたことを把握したときから、ＶＯＤサーバ１は、他のクライアントの使用に影響を及ぼさないようにチャネルＳ６をクローズする。これは、チャネルＳ６の選択が前述の条件を満足する場合に、他のいかなるクライアントもこの時点でチャネルＳ６を使用してない、すなわち、前述の条件を満足するチャネルＳ１０およびＳ１１がどちらもすでにチャネルＳ６にマージしているからである。したがって、すべてのチャネル・マージが最下位のサブチャネルからそのルート・レベルへの方向に開始することが保証される。すなわち、特定のチャネルを使用するすべてのクライアント４が（そのチャネルのサブチャネルの形で）明示的にそのチャネルをリリースするまで、そのチャネルは除去されない。
【００５４】
開始、ジャンプ、マージ、および停止のような４つのタイプのイベントに応答するＶＯＤサーバ１およびその中のユニットの動作について、図６、図７、図８、および図９に併せて以下に説明する。
【００５５】
まず、開始イベントに応答するＶＯＤサーバ１およびその中のユニットの動作について説明する。
【００５６】
図６に示す通り、クライアント４が時間「ｔ」で開始イベントを開始する（すなわち、クライアントがビデオ・クリップを再生することを選択する）と、以下のようになる。
【００５７】
ステップ１００では、チャネル選択ユニット１０は、ビデオ・プログラムを再生するために新規チャネルＳ１１を作成し、チャネルＳ１１でｓｔａｒｔ＿ｔｉｍｅ＝ｔ、ｏｂｊｅｃｔ＿ｏｆｆｓｅｔ＝０（チャネルが開始したときのオフセット時間を示すオブジェクト・オフセット時間、すなわち、時間「ｔ」で開始するチャネルに対するそのチャネルの開始時刻のオフセット）、およびｒｅｆ＿ｎｕｍ＝１（クライアントの数を示す参照値）を設定し、その場合、ｓｔａｒｔ＿ｔｉｍｅ＝ｔはそのチャネルが時間「ｔ」で開始することを示し、ｏｂｊｅｃｔ＿ｏｆｆｓｅｔ＝０はそのチャネルがオフセットをまったく持っていないことを示し、ｒｅｆ＿ｎｕｍ＝１は１つのクライアントのみがそのチャネルを使用していることを示す。
【００５８】
ステップ１０２では、チャネル選択ユニット１０によってチャネルＳ１１の親チャネルがシークされる。
【００５９】
ステップ１０３では、親チャネルが存在するかどうかが判別される。
【００６０】
ステップ１０４では、親チャネルがまったく見つからない場合に、チャネル制御ユニット２０はチャネルＳ１１を新規ルート・チャネルと見なし（すなわち、ｒｏｏｔ＿ｆｌａｇ＝１（そのチャネルがルート・チャネルであるかどうかを示すルート・マーク）を設定し）、このチャネルＳ１１は、クライアント４が視聴しなければならない唯一のチャネルになる。
【００６１】
あるいは、ステップ１０５では、親チャネルＳ６が見つかった場合に、クライアント４はチャネルＳ１１とその親チャネルＳ６を同時に視聴しなければならない。
【００６２】
ステップ１０６では、クライアント４によって開始された開始要求に応答して、上記の動作情報がクライアント４に送信される。
【００６３】
次に、ジャンプ・イベントに応答するＶＯＤサーバ１およびその中のユニットの動作について説明する。
【００６４】
図７に示す通り、クライアント４が時間「ｔ」に対するオブジェクト・オフセット時間「ｓ」でジャンプ・イベントを開始する（すなわち、クライアント４が時間「ｔ−ｓ」で早送り／後送りなどのＶＣＲのような機能を実行する）と、以下のようになる。
【００６５】
ステップ２００では、チャネル選択ユニット１０は、時間「ｔ−ｓ」から始めてビデオ・プログラムを再生するために新規チャネルＳ１１を作成し、チャネルＳ１１でｓｔａｒｔ＿ｔｉｍｅ＝ｔ−ｓ、ｏｂｊｅｃｔ＿ｏｆｆｓｅｔ＝ｓ、およびｒｅｆ＿ｎｕｍ＝１を設定し、その場合、ｓｔａｒｔ＿ｔｉｍｅ＝ｔ−ｓはそのチャネルが時間「ｔ−ｓ」から開始することを示し、ｏｂｊｅｃｔ＿ｏｆｆｓｅｔ＝ｓは時間「ｔ」から開始するチャネルに対するそのチャネルの開始時刻のオフセット時間がｓであることを示し、ｒｅｆ＿ｎｕｍ＝１は１つのクライアントのみがそのチャネルを使用していることを示す。
【００６６】
ステップ２０２では、時間「ｔ」で開始するチャネルがＳ４である場合に、チャネルＳ４のカウント・パラメータの値が減らされ、すなわち、クライアント４によって事前に使用されていたチャネルＳ４がすでに停止操作を実行させられているので、チャネルＳ４を使用するクライアントの数がその時点で１だけ減らされる。この時点で、チャネルＳ４のカウント・パラメータがゼロであり、いかなるクライアントもその時点でチャネルＳ４を使用していないことを示す場合、チャネル制御ユニット２０はチャネルＳ４をクローズし、対照的に、この時点で、チャネルＳ４のカウント・パラメータがゼロではなく、依然として複数のクライアント４がチャネルＳ４を使用している場合、チャネルＳ４を使用する他のクライアント（Ｓ８およびＳ９など）によって連続的に使用されるように、チャネルＳ４はクローズすることができない。しかし、ジャンプ・イベントを呼び出したクライアント４はもはやチャネルＳ４を使用しない。その代わりに、そのクライアントはチャネルＳ１１に転じてビデオ・プログラムを視聴する。
【００６７】
ステップ２０３では、チャネル選択ユニット１０によってチャネルＳ１１の親チャネルがシークされる。
【００６８】
ステップ２０４では、親チャネルが存在するかどうかが判別される。
【００６９】
ステップ２０５では、親チャネルがまったく見つからない場合に、チャネル制御ユニット２０はチャネルＳ１１を新規ルート・チャネルと見なし（すなわち、ｒｏｏｔ＿ｆｌａｇ＝１を設定し）、このチャネルＳ１１は、クライアント４が視聴しなければならない唯一のチャネルになる。
【００７０】
あるいは、ステップ２０６では、親チャネルＳ６が見つかった場合に、クライアント４はチャネルＳ１１とその親チャネルＳ６を同時に視聴しなければならない。
【００７１】
ステップ２０８では、クライアント４によって開始されたジャンプ要求に応答して、上記の動作情報がクライアント４に送信される。
【００７２】
次に、マージ・イベントに応答するＶＯＤサーバ１およびその中のユニットの動作について説明する。
【００７３】
図８に示す通り、クライアント４がマージ・イベントを開始する（すなわち、親チャネルＳ６へのサブチャネルＳ１１のマージが行われる）と、以下のようになる。
【００７４】
ステップ３００では、チャネル制御ユニット２０は、サブチャネルＳ１１のカウント・パラメータの値を減らす。すなわち、クライアント４によって使用されるチャネルＳ１１がすでにその親チャネルＳ６にマージしているので、チャネルＳ１１を使用するクライアントの数がその時点で１だけ減らされる。この時点で、チャネルＳ１１のカウント・パラメータがゼロであり、いかなるクライアントもその時点でチャネルＳ１１を使用していないことを示す場合、ＶＯＤサーバ１はチャネルＳ１１をクローズし、対照的に、この時点で、チャネルＳ１１のカウント・パラメータがゼロではなく、依然として複数のクライアントがチャネルＳ１１を使用している場合、他のクライアントがチャネルＳ１１を連続的に使用できるように、チャネルＳ１１はクローズすることができない。しかし、マージ・イベントを開始するクライアント４はもはやチャネルＳ１１を使用せず、チャネルＳ６にジャンプしてビデオ・プログラムを視聴する。チャネルＳ１１のカウント・パラメータの値は、チャネルＳ１１を使用するクライアントの数である。たとえば、カウント・パラメータが１（すなわち、ｒｅｆ＿ｎｕｍ＝１）である場合、１つのクライアント４がチャネルＳ１１を使用していることが示される。カウント・パラメータが５（すなわち、ｒｅｆ＿ｎｕｍ＝５）である場合、５つのクライアント４がそのチャネルを使用しており、これらのチャネルのすべてがチャネルＳ１１の子孫チャネルであることが示される。
【００７５】
ステップ３０２では、チャネル選択ユニット１０によってチャネルＳ６の親チャネルがシークされる。
【００７６】
ステップ３０３では、親チャネルが存在するかどうかが判別される。
【００７７】
ステップ３０４では、チャネルＳ６の親チャネルがまったく見つからない場合に、チャネルＳ６が新規ルート・チャネルと見なされ（すなわち、ｒｏｏｔ＿ｆｌａｇ＝１を設定し）、このチャネルＳ６は、クライアント４が視聴しなければならない唯一のチャネルになる。
【００７８】
あるいは、ステップ３０５では、チャネルＳ６の親チャネルＳ５が見つかった場合に、クライアント４はチャネルＳ６とその新たに判別された親チャネルＳ５を同時に視聴しなければならない。
【００７９】
ステップ３０６では、クライアント４によって開始されたマージ要求に応答するために、上記の動作情報がクライアント４に送信される。
【００８０】
次に、停止イベントに応答するＶＯＤサーバ１およびその中のユニットの動作について説明する。
【００８１】
図９に示す通り、クライアント４が停止イベントを開始する（すなわち、クライアント４がＶＣＲのような機能の停止操作を実行する）かまたはオブジェクト（ビデオ・プログラム）が終了ポイント（すなわち、終端）に到達すると、以下のようになる。
【００８２】
クライアントがチャネルＳ１１を使用してビデオ・プログラムを視聴していると想定すると、ステップ４００では、ビデオ・プログラムが終了ポイントに到達したかどうか、すなわち、ビデオ・プログラムが終了したかどうかが判別される。
【００８３】
そのオブジェクト（ビデオ・プログラム）が終了ポイントに到達した場合、チャネル制御ユニット２０は、ステップ４０２で、クライアント４によって使用されているチャネルＳ１１をクローズし、そのチャネルのすべてのリソースを直接リリースする。
【００８４】
ビデオ・プログラムが終了ポイントに到達していない場合、ステップ４０４でチャネル制御ユニット２０は、上述の通り、チャネルＳ１１の参照値の値を減らす。チャネルＳ１１の参照値がゼロである場合、チャネルＳ１１はクローズされ、そのチャネルのすべてのリソースがリリースされ、対照的に、チャネルＳ１１の参照値がゼロではない場合、他のクライアントがチャネルＳ１１を連続的に使用できるように、チャネル制御ユニット２０はチャネルＳ１１をクローズせず、「停止イベント」を呼び出したクライアントはもはやチャネルＳ１１を使用しなくなる。
【図面の簡単な説明】
【００８５】
【図１】ＶＯＤサーバと複数のクライアントとを有するマルチキャスト・ネットワークを示す図である。
【図２】チャネル・マージを実行するビデオ・プログラム・ストリームの概略図である。
【図３】チャネル・マージ・ツリーの概略図である。
【図４】図１のＶＯＤサーバとクライアントとの間で行われる要求／応答のタイミング図である。
【図５】本発明によりＶＯＤサーバ内に構成されたチャネル・マージ装置の構造を示す図である。
【図６】本発明により「開始イベント」が発生した場合のＶＯＤサーバのプロセスの流れ図である。
【図７】本発明により「ジャンプ・イベント」が発生した場合のＶＯＤサーバのプロセスの流れ図である。
【図８】本発明により「マージ・イベント」が発生した場合のＶＯＤサーバのプロセスの流れ図である。
【図９】本発明により「停止イベント」が発生した場合のＶＯＤサーバのプロセスの流れ図である。
【図１】
0004475521.tif 000002
【図２】
0004475521.tif 000003
【図３】
0004475521.tif 000004
【図４】
0004475521.tif 000005
【図５】
0004475521.tif 000006
【図６】
0004475521.tif 000007
【図７】
0004475521.tif 000008
【図８】
0004475521.tif 000009
【図９】
0004475521.tif 000010