(57)【特許請求の範囲】
【請求項１】
ストリームデータの再生中において動的に構成が変更可能なＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のうちのいずれかの端末である通信端末であって、
前記ＡＬＭ配信木において前記通信端末よりも上位の端末からストリームデータを順次受信し、且つ、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末よりも下位の端末に送信する通信部と、
受信した前記ストリームデータを記憶する記憶部と、
前記記憶部に記憶されたストリームデータを所定のタイミングに順次再生する再生部と、
前記ＡＬＭ配信木において前記通信端末よりも下位の各端末間におけるデータ通信の遅延時間を取得する取得部と、
前記所定のタイミングから、前記取得部により取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値以上の時間だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御する制御部と、
前記ＡＬＭ配信木において前記通信端末の下位の端末である第１の端末と前記通信端末の上位の端末である第２の端末とが入れ替えられたことを検知したときに、前記通信部の前記ストリームデータの転送先を前記第１の端末から前記第２の端末に変更する転送部とを備え、
前記通信部は、さらに、前記転送部が前記第１の端末と前記第２の端末とが入れ替えられたことを検知した場合に、（ａ）前記第２の端末が取得しているストリームデータであって、かつ、前記第１の端末が取得している最新のストリームデータの次のストリームデータを前記第１の端末へ送信し、（ｂ）前記次のストリームデータを前記第１の端末へ送信した後、前記第２の端末へ新たなストリームデータを送信する
通信端末。
【請求項２】
前記ＡＬＭ配信木において、前記通信端末に対応する葉端末が複数存在し、
前記合計値は、前記通信端末から、各葉端末までの複数の通信路のうちで、全ての遅延時間の合計値が最も大きい通信路に対応する値である
請求項１に記載の通信端末。
【請求項３】
さらに、前記通信端末よりも下位の端末の前記遅延時間が変化した場合に、変化した遅延時間に応じて、再生中の前記ストリームデータの次のストリームデータの再生時刻を調整する調整部を備える
請求項１または２に記載の通信端末。
【請求項４】
前記取得部は、
前記ＡＬＭ配信木において、前記通信端末と、該通信端末の子端末である第２の端末との間の遅延時間を測定し、測定した前記遅延時間を前記通信端末の親端末へ送信する
請求項１乃至請求項３のいずれか１項に記載の通信端末。
【請求項５】
前記取得部は、さらに、
前記第２の端末が測定した当該第２の端末の子端末である第３の端末と当該第２の端末との間の遅延時間を前記第２の端末から受信し、受信した前記遅延時間を、前記通信端末の親端末へ送信する
請求項４に記載の通信端末。
【請求項６】
前記制御部は、前記所定のタイミングから、前記取得部により取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御する
請求項１乃至請求項５のいずれか１項に記載の通信端末。
【請求項７】
前記所定のタイミングは、前記ストリームデータが前記記憶部に記憶されてから、前記記憶部に該ストリームデータを保持するための所定時間だけ経過したタイミングである
請求項１乃至請求項６のいずれか１項に記載の通信端末。
【請求項８】
前記ストリームデータは、映像データ及び音声データの少なくとも一方を含む
請求項１乃至請求項７のいずれか１項に記載の通信端末。
【請求項９】
ストリームデータの再生中において動的に構成が変更可能なＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のうちのいずれかの端末である通信端末が行う通信制御方法であって、
前記ＡＬＭ配信木において前記通信端末よりも上位の端末からストリームデータを順次受信し、且つ、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末よりも下位の端末に送信するステップと、
受信した前記ストリームデータを前記通信端末が備える記憶部に記憶するステップと、
前記記憶部に記憶されたストリームデータを所定のタイミングに順次再生するステップと、
前記ＡＬＭ配信木において前記通信端末よりも下位の各端末間におけるデータ通信の遅延時間を取得するステップと、
前記所定のタイミングから、前記取得ステップにより取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値以上の時間だけ遅いタイミングに、前記ストリームデータの再生を開始するステップと、
前記ＡＬＭ配信木において前記通信端末の下位の端末である第１の端末と前記通信端末の上位の端末である第２の端末とが入れ替えられたことを検知したときに、前記ストリームデータの転送先を前記第１の端末から前記第２の端末に変更するステップと、
前記第１の端末と前記第２の端末とが入れ替えられたことを検知した場合に、（ａ）前記第２の端末が取得しているストリームデータであって、かつ、前記第１の端末が取得している最新のストリームデータの次のストリームデータを前記第１の端末へ送信し、（ｂ）前記次のストリームデータを前記第１の端末へ送信した後、前記第２の端末へ新たなストリームデータを送信するステップとを含む
通信制御方法。
【請求項１０】
請求項９記載の通信制御方法をコンピュータに実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のうちのいずれかである通信端末に関する。
【背景技術】
【０００２】
従来より、ＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のうちのいずれかである通信端末であって、前記ＡＬＭ配信木において前記通信端末よりも上位の端末からストリームデータを順次受信し、且つ、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末よりも下位の端末に送信し、受信した前記ストリームデータを記憶し、記憶されたストリームデータを所定のタイミングに順次再生する通信端末がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Improving the Fault Resilience of Overlay Multicast for Media Streaming Tan, G.; Jarvis, S.A.; Parallel and Distributed Systems, IEEE Transactions on Volume: 18, Issue: 6 Digital Object Identifier: 10.1109/TPDS.2007.1054 Publication Year: 2007, Page(s): 721 - 734
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＡＬＭ配信木の構成が動的に変更される場合が考えられる。この場合に、ストリームデータが再生開始されるタイミングが、不適切なタイミングになってしまうことがある。【０００５】
そこで、本発明は、かかる問題に鑑みてなされたものであって、ＡＬＭ配信木の構成が動的に変更される場合でも、ストリームデータが再生開始されるタイミングが適切にできる通信端末、通信制御方法、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の一態様に係る通信端末は、ストリームデータの再生中において動的に構成が変更可能なＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のうちのいずれかの端末である。前記通信端末は、前記ＡＬＭ配信木において前記通信端末よりも上位の端末からストリームデータを順次受信し、且つ、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末よりも下位の端末に送信する通信部と、受信した前記ストリームデータを記憶する記憶部と、前記記憶部に記憶されたストリームデータを所定のタイミングに順次再生する再生部と、前記ＡＬＭ配信木において前記通信端末よりも下位の各端末間におけるデータ通信の遅延時間を取得する取得部と、前記所定のタイミングから、前記取得部により取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値以上の時間だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御する制御部と、を備える。【０００７】
なお、この全般的又は具体的な態様は、システム、方法、集積回路、又はコンピュータプログラム又は記録媒体で実現されてもよく、システム、方法、集積回路、及びコンピュータプログラム及び記録媒体の任意な組合せで実現されてもよい。
【発明の効果】
【０００８】
本発明の通信端末等によれば、ＡＬＭ配信木の構成が動的に変更される場合でも、ストリームデータが再生開始されるタイミングが適切にできる。
【図面の簡単な説明】
【０００９】
【図１】図１は、ＡＬＭ配信木を説明するための図である。
【図２】図２は、ＡＬＭ配信木を説明するための図である。
【図３】図３は、ＡＬＭ配信木の構成の変更を説明するための図である。
【図４】図４は、ＡＬＭ配信木の構成の変更を説明するための図である。
【図５Ａ】図５Ａは、ＡＬＭ配信木において端末の入替えが生じた場合の処理を説明するための第１の図である。
【図５Ｂ】図５Ｂは、ＡＬＭ配信木において端末の入替えが生じた場合の処理を説明するための第２の図である。
【図６】図６は、ＡＬＭ配信木を説明するための図である。
【図７】図７は、本発明の第１の実施形態に係る通信端末の構成を示す図である。
【図８】図８は、第２処理のフローチャートである。
【図９Ａ】図９Ａは、メッセージの送信状態を示す第１の図である。
【図９Ｂ】図９Ｂは、メッセージの送信状態を示す第２の図である。
【図１０】図１０は、メッセージの一例を示す図である。
【図１１】図１１は、各端末が必要なブランチ遅延の一例を示す図である。
【図１２】図１２は、第３処理のフローチャートである。
【図１３Ａ】図１３Ａは、第２通信路の一部又は全てに対応する各端末の状態の一例を示す第１の図である。
【図１３Ｂ】図１３Ｂは、第２通信路の一部又は全てに対応する各端末の状態の一例を示す第２の図である。
【図１４】図１４は、各端末に対応する再生遅延時間の一例を示す図である。
【図１５Ａ】図１５Ａは、本発明の第１の実施形態の変形例１における処理を説明するための第１の図である。
【図１５Ｂ】図１５Ｂは、本発明の第１の実施形態の変形例１における処理を説明するための第２の図である。
【図１６】図１６は、第４処理のフローチャートである。
【図１７】図１７は、本発明の第１の実施形態の変形例２に係る通信端末の構成を示す図である。
【図１８Ａ】図１８Ａは、第５処理の一例を説明するための第１の図である。
【図１８Ｂ】図１８Ｂは、第５処理の一例を説明するための第２の図である。
【図１９】図１９は、第５処理のフローチャートである。
【図２０Ａ】図２０Ａは、本発明の第２の実施形態に係る記録媒体の物理フォーマットの例を示す図である。
【図２０Ｂ】図２０Ｂは、本発明の第２の実施形態に係る記録媒体の構成を示す図である。
【図２０Ｃ】図２０Ｃは、本発明の第２の実施形態に係るコンピュータシステムの構成を示す図である。
【図２１】図２１は、通信端末の特徴的な機能構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
（本発明の基礎となった知見）
本発明は、ＡＬＭ（Ａｐｐｌｉｃａｔｉｏｎ  Ｌａｙｅｒ  Ｍｕｌｔｉｃａｓｔ）配信木を用いてストリームを配信する場合に、シームレスなストリーミングを維持する方法に関する。
【００１１】
発明者らにおいては、映像データを複数の端末に同時に配信する技術として、ＡＬＭ配信木を用いたストリームの配信方法が知られている。
【００１２】
図１は、このＡＬＭ配信木の概要について説明するための第１の図である。
【００１３】
図２は、このＡＬＭ配信木の概要について説明するための第２の図である。
【００１４】
図１に示されるように、端末１１，１２，１３，１４，１５，１６，１７は、インターネット又はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の、スター型の通信ネットワーク１０に接続されている。
【００１５】
ここで、例えば、端末１１が、他の全ての端末１２，１３，１４，１５，１６，１７に対して直接ストリームデータを配信しようとすると、データ量が、端末１１に接続されている回線の帯域幅の上限を超えてしまい、遅延が生じる可能性がある。
【００１６】
そこで、図２に示されるように、ストリームデータの配信元である端末１１を頂点（ルート端末）とする、論理的な階層構造を構築する。つまり、端末１１は、ストリームデータを端末１２，１３にのみ配信する。そして、端末１２，１３は、端末１１から受信したストリームデータを再生すると共に、端末１２は、当該ストリームデータを端末１４，１６へ配信し、端末１３は、当該ストリームデータを端末１５，１７へ配信する。
【００１７】
上記構成によれば、通信ネットワーク上に発生するトラフィックを分散させることができるので、各端末に遅延（大きな遅延）なくストリームを配信できる。
【００１８】
しかしながら、ＡＬＭ配信木を用いてストリームを配信する場合に、ＡＬＭ配信木上における各端末間のネットワーク状況の、動的な変化に対応するために、端末の位置を動的に変更させる必要が生じる。
【００１９】
図３は、この必要が生じることを説明するための第１の図である。
【００２０】
例えば、図３に示すＡＬＭ配信木において、端末２１と端末２３との間の通信状況が悪化したとする。通信状況が悪化する要因としては、端末２１と端末２３との間のネットワークのトラフィックが上昇するなどが考えられる。
【００２１】
図４は、上述の必要が生じることを説明するための第２の図である。
【００２２】
このようにして、トラフィックが上昇した場合、この図４のように、例えば、ＡＬＭ配信木において、端末２１と、端末２７との入替えを行うことにより、悪化した通信状況を改善することができる。本明細書において、端末の入替えとは、ＡＬＭ配信木における、端末の位置の入替え（交換）である。
【００２３】
非特許文献１では、各受信端末のデータの再生許容時間として、一定の固定値の時間を設定する技術が開示されている。ここで、再生許容時間とは、バッファにデータが記憶されてから、当該データの再生が開始されるまでの時間である。しかしながら、非特許文献１では、端末間の実際の遅延を考慮していないために、通信品質の低下を招く。
【００２４】
実際の遅延が考慮されないため、非特許文献１では、設定される再生遅延時間が短か過ぎることがある。これにより、損失した映像データの乱れが回復されるよりも前に、その回復がされないまま、当該映像データが再生されるといった不具合が発生する。また、設定される再生遅延時間が長過ぎることもある。これにより、データの再生時刻が、必要以上に遅れるといった不具合が発生する。
【００２５】
しかしながら、ＡＬＭ配信木において、端末の入替えを実施する際、以下のような課題がある。
【００２６】
具体的には、端末の入替えが行われた２つの端末の少なくとも一方までの、ルート端末からの、データの遅延時間の大きさによっては、ストリームデータが、シームレスに再生されない場合がある。これにより、例えば、映像のスキップが発生することがある。これについて説明する。
【００２７】
図５Ａ及び図５Ｂは、それぞれ、ＡＬＭ配信木において端末の入替えが生じた場合の処理を説明するための図である。つまり、図５Ａは、端末の入れ替えか行われる前の状態を示した図である。一方、図５Ｂは、端末の入替えが行われた後の、各端末の状態を示す図である。
【００２８】
図５Ａ及び図５Ｂにおいて、シーケンス番号０〜１１を示している。それぞれのシーケンス番号が付されたブロック（四角）は、ストリームデータ（パケット）を示す。以下においては、ストリームデータを、パケットともいう。また、以下においては、シーケンス番号を、単に、番号とも表記する。
【００２９】
小さい番号を示すブロック程、時間的に古いストリームデータである。すなわち、小さい番号を示すブロック程、ルート端末から、より早い時刻に送信されたデータストリームである。
【００３０】
また、図５Ａ及び図５Ｂにおいて、端末Ｐ７１〜Ｐ７５は、ＡＬＭ配信木における、ルート端末から葉端末までの１つの通信路に対応する、その通信路上にある各端末である。端末Ｐ７１は、一例として、ルート端末である。この場合、端末Ｐ７１は、ＡＬＭ配信木の第１階層の端末である。端末Ｐ７２〜Ｐ７５は、それぞれ、第２〜第５階層の端末である。
【００３１】
また、端末Ｐ７１〜Ｐ７５のうちのそれぞれの端末（例えば、図５Ａにおける端末Ｐ７２）の位置の行方向の位置に、０個以上の番号（９，８，７，６）が示される。各端末と行方向に対応づけられた上述の０個以上の番号は、当該端末のバッファに記憶されている０個以上のストリームデータのシーケンス番号（先述）を示す。例えば、図５Ａの状態における、端末Ｐ７５のバッファには、番号０〜３をそれぞれ示す４つのストリームデータが格納されている。
【００３２】
なお、図５Ａ及び図５Ｂでは、ＡＬＭ配信木における、隣接する２つの端末間の遅延時間は、一例として、１００ミリ秒であるとする。隣接する２つの端末は、例えば、端末Ｐ７２，Ｐ７３である。
【００３３】
図５Ａ及び図５Ｂのそれぞれの縦軸は、端末Ｐ７１からのデータの遅延時間を示す。図５Ａでは、端末Ｐ７１から送信されたデータは、一例として、４００ミリ秒（＝１００ミリ秒×４）後に、端末Ｐ７５に到達することが示される。
【００３４】
以下においては、番号ｎ（自然数）を示すストリームデータを、ｎ番目のストリームデータともいう。例えば、番号１０を示すストリームデータを、１０番目のストリームデータという。
【００３５】
図５Ａ及び図５Ｂに示すように、通信状況の悪化により、端末Ｐ７２と端末Ｐ７５との入替えが行われたとする。ここで、第５階層に移動された端末Ｐ７２（図５Ｂ）に対応するバッファには、番号６〜９をそれぞれ示す４つのストリームデータが格納されている。そのため、端末Ｐ７２は、次に、番号１０を示すストリームデータ（パケット）を受信する必要がある（図５Ａの状態での端末Ｐ７２を参照）。
【００３６】
しかしながら、１０番目のストリームデータは、端末Ｐ７５，Ｐ７３，Ｐ７４を経由して、端末Ｐ７２に到着する（図５Ｂ参照）。そのため、端末Ｐ７２には、端末の入替えが行われない場合よりも、１０番目のストリームデータが、より遅れて到着する。つまり、端末Ｐ７５から端末Ｐ７２までの通信路に対応する、その通信路上における、２つの端末（例えば端末Ｐ７２，Ｐ７３）の組合せがある。それぞれの組合せの２つの端末の間の、データの遅延時間（１００ミリ秒）の合計値（１００ミリ秒×３＝３００ミリ秒）の分だけ、１０番目のストリームデータが、より遅れて到着する。その結果、端末Ｐ７２では、遅延時間のこの合計値の分だけ、ストリームデータ（映像等）の再生が停止するといった問題が生じる。
【００３７】
本技術は、このような問題を解決するものであり、ＡＬＭ配信木の構成が変化したとしても、シームレスな、ストリームデータの再生を実現することができる通信端末等を提供することを目的とする。
【００３８】
本技術により、ＡＬＭ配信木の構成が変化したとしても、シームレスなストリームデータの再生を実現することができる。
【００３９】
本発明の一態様である通信端末は、ストリームデータの再生中において動的に構成が変更可能なＡＬＭ（Application Layer Multicast）配信木（図３、図４、図６、図９Ａ、図９Ｂ、図２などを参照）を構成する複数の端末のうちのいずれかの端末である。前記通信端末は、前記ＡＬＭ配信木において前記通信端末（例えば図６の端末２１）よりも上位の端末（端末２０）からストリームデータを順次受信し、且つ、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末よりも下位の端末（端末２３、２４）に送信する通信部（図２１の通信部２１０参照）と、受信した前記ストリームデータを記憶する記憶部（記憶部２２０参照）と、前記記憶部に記憶されたストリームデータを所定のタイミングに順次再生する再生部（再生部２３０参照）と、前記ＡＬＭ配信木において前記通信端末よりも下位の各端末間におけるデータ通信の遅延時間を取得する取得部（取得部２４０参照）と、前記所定のタイミングから、前記取得部により取得された、前記通信端末（例えば、図１３Ａの端末Ｐ２）から葉端末（端末Ｐ５）までの通信路に対応する全ての前記遅延時間の合計値（図１３Ａの時間Ｔ２を参照）以上の時間（時間Ｔ１（≧時間Ｔ２））だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御する制御部（制御部２５０参照）と、を備える。
【００４０】
本態様によると、制御部は、前記所定のタイミングから、前記取得部により取得された、前記通信端末（自端末）から葉端末までの通信路に対応する全ての遅延時間の合計値以上の時間だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御する。所定のタイミングは、再生部がストリームデータを再生するタイミングである。
【００４１】
これにより、制御部は、所定のタイミングから、前記通信端末から葉端末までの通信路に対応する全ての遅延時間の合計値以上の時間だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するよう、前記再生部を制御する。そのため、例えば、ＡＬＭ配信木において前記通信端末の上位の端末（端末２１を参照）のネットワーク状況（図３における、端末２１、２３の間の通信路でのネットワーク状況を参照）が悪くなったときに、当該上位の端末（端末２１）と前記通信端末の下位の端末（端末２７）とが入れ替えられた場合でも、順次受信するストリームデータを途切れることなく再生することできる。その結果、ストリームデータの再生が停止するのを防止できる。従って、ＡＬＭ配信木の構成が変化したとしても、シームレスなストリームデータの再生を実現することができる。
【００４２】
また、例えば、前記ＡＬＭ配信木において、前記通信端末（例えば図１１の第１３行の端末２３）に対応する葉端末が複数存在し（図９Ａの端末２７、２８）、前記合計値は、前記通信端末から、各葉端末までの複数の通信路のうちで、全ての遅延時間の合計値（図１１の第１３行のＤＴ（２３、２７）、ＤＴ（２３、８７））が最も大きい通信路（例えば、２つの端末２３、２８の間の通信路）に対応する値である。
【００４３】
また、例えば、前記通信端末は、さらに、前記ＡＬＭ配信木において前記通信端末の下位の端末である第１の端末（図１５Ａ、図１５Ｂの端末Ｐ５参照）と前記通信端末の上位の端末である第２の端末（端末Ｐ２参照）とが入れ替えられたことを検知したときに、前記通信部の前記ストリームデータの転送先を前記第１の端末から前記第２の端末に変更する転送部を備え、前記通信部は、さらに、前記転送部が前記第１の端末と前記第２の端末とが入れ替えられたことを検知した場合に、（ａ）前記第２の端末が取得しているストリームデータであって、かつ、前記第１の端末が取得している最新のストリームデータの次のストリームデータを前記第１の端末へ送信し（端末Ｐ４からデータＤ１０への矢印線を参照）、（ｂ）前記次のストリームデータを前記第１の端末へ送信した後、前記第２の端末へ新たなストリームデータを送信する（端末Ｐ４からデータＤ２０への矢印線を参照）。
【００４４】
本態様によると、前記第１の端末と前記第２の端末とが入れ替えられた場合に、前記第２の端末が取得しているストリームデータであって、かつ、前記第１の端末が取得している最新のストリームデータの次のストリームデータを前記第１の端末へ送信する。そして、前記次のストリームデータを前記第１の端末へ送信した後、前記第２の端末へ新たなストリームデータを送信する。
【００４５】
これにより、前記第１の端末が取得している最新のストリームデータの次のストリームデータを前記第１の端末へ送信するので、ＡＬＭ配信木のルート端末からのストリームデータの送信量が多い場合でも、移動後の前記第１の端末へ、前記最新のストリームデータの次のストリームデータを、遅延することなく、送信することができる。その結果、通信端末より上位の階層に移動する前記第１の端末において、ストリームデータの再生が途切れるのを防止できる。
【００４６】
また、例えば、前記通信端末は、さらに、前記通信端末よりも下位の端末の前記遅延時間が変化した場合に（図１９のＳ４１０のＹＥＳ）、変化した遅延時間に応じて、再生中の前記ストリームデータの次のストリームデータの再生時刻を調整する調整部を備える。
【００４７】
本態様によると、通信端末（自端末）よりも下位の端末の前記遅延時間が変化した場合に、変化した遅延時間に応じて、再生中の前記ストリームデータの次のストリームデータの前記再生時刻を調整する。
【００４８】
これにより、ストリームデータの再生中に、通信端末の下位の端末がなくなった場合、又は、前記通信端末の下位に新たに端末（図１８Ｂの端末Ｐ５を参照）が追加された場合にも対応できる。
【００４９】
また、例えば、前記取得部は、前記ＡＬＭ配信木において、前記通信端末と、該通信端末の子端末である第２の端末との間の遅延時間を測定し、測定した前記遅延時間を前記通信端末の親端末へ送信する。
【００５０】
また、例えば、前記取得部は、さらに、前記第２の端末が測定した当該第２の端末の子端末である第３の端末と当該第２の端末との間の遅延時間を前記第２の端末から受信し、受信した前記遅延時間を、前記通信端末の親端末へ送信する。
【００５１】
また、例えば、前記制御部は、前記所定のタイミングから、前記取得部により取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御する。
【００５２】
本態様によると、前記制御部は、前記所定のタイミングから、前記取得部により取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御する。これにより、通信端末の下位の各端末間で前記ストリームデータの再生開始のタイミングを一致させることができる。その結果、各端末間で再生されているストリームデータにズレが発生するのを防止できる。
【００５３】
また、例えば、前記所定のタイミングは、前記ストリームデータが前記記憶部に記憶されてから、前記記憶部に該ストリームデータを保持するための所定時間だけ経過したタイミングである。
【００５４】
また、例えば、前記ストリームデータは、映像データ及び音声データの少なくとも一方を含む。
【００５５】
本発明の一態様に係る通信制御方法は、ストリームデータの再生中において動的に構成が変更可能なＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のうちのいずれかの端末である通信端末が行う。前記通信端末は、前記ＡＬＭ配信木において前記通信端末よりも上位の端末からストリームデータを順次受信し、且つ、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末よりも下位の端末に送信する通信部と、受信した前記ストリームデータを記憶する記憶部と、前記記憶部に記憶されたストリームデータを所定のタイミングに順次再生する再生部と、を備え、前記通信制御方法は、前記ＡＬＭ配信木において前記通信端末よりも下位の各端末間におけるデータ通信の遅延時間を取得する取得ステップと、前記所定のタイミングから、前記取得ステップにより取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値以上の時間だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御するステップと、を含む。
【００５６】
本発明の一態様に係るプログラムは、ストリームデータの再生中において動的に構成が変更可能なＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のうちのいずれかの端末である通信端末が実行するプログラムである。前記通信端末は、前記ＡＬＭ配信木において前記通信端末よりも上位の端末からストリームデータを順次受信し、且つ、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末よりも下位の端末に送信する通信部と、受信した前記ストリームデータを記憶する記憶部と、前記記憶部に記憶されたストリームデータを所定タイミングに順次再生するための再生部と、を備え、前記プログラムは、前記ＡＬＭ配信木において前記通信端末よりも下位の各端末間におけるデータ通信の遅延時間を取得する取得ステップと、前記所定タイミングから、前記取得ステップにより取得された、前記通信端末から葉端末までの通信路に対応する全ての前記遅延時間の合計値以上の時間だけ遅いタイミングに、前記再生部が前記ストリームデータの再生を開始するように前記再生部を制御するステップと、を含む。
【００５７】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。以下の説明では、同一の構成要素には同一の符号を付してある。それらの名称及び機能も同じである。従って、それらについての詳細な説明を省略する場合がある。
【００５８】
なお、以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、より好ましい形態を構成する任意の構成要素として説明される。
【００５９】
＜第１の実施形態＞
図６は、ＡＬＭ配信木を説明するための図である。
【００６０】
図６に示すように、ＡＬＭ配信木とは、アプリケーション層において、マルチキャストを実現するためのものである。ＡＬＭ配信木では、ストリームデータの再生中において、動的に、構成が変更可能である。本明細書において、ストリームデータとは、映像データ及び音声データを含むデータである。
【００６１】
なお、ストリームデータは、映像データ及び音声データのいずれか一方を含むデータであってもよい。すなわち、本明細書において、ストリームデータは、映像データ及び音声データの少なくとも一方を含む。
【００６２】
ＡＬＭ配信木は、複数の端末から構成される。ＡＬＭ配信木を構成する複数の端末の各々は、他の端末と通信する機能を有する通信端末である。ＡＬＭ配信木は、階層構造を有する。図６に示されるＡＬＭ配信木は、一例として、５つの階層を有する。なお、ＡＬＭ配信木を構成する階層の数は５つに限定されず、例えば、４つ又は６つ以上であってもよい。
【００６３】
端末Ｒ１０は、ルート端末である。端末Ｒ１０は、第１階層（最上位層）の端末である。端末２０〜端末３４の各々は、各階層のうちの１つに属する。例えば、端末２１，２２の各々は、第３階層に属する。
【００６４】
ＡＬＭ配信木において、最下位層の端末を、葉端末という。図６において、第５階層の端末は、葉端末である。
【００６５】
なお、ＡＬＭ配信木は、図６の構成に限定されない。例えば、端末２９はなくてもよい。この場合、端末２４の子端末は、端末３０のみとなる。
【００６６】
図７は、本発明の第１の実施形態に係る通信端末１００の構成を示す図である。通信端末１００は、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末及び葉端末以外の端末である。
【００６７】
通信端末１００は、転送部１１０と、マルチキャスト部１２０と、取得部１３０と、算出部１４０と、制御部１５０と、再生部１６０と、バッファ１７０とを備える。
【００６８】
バッファ１７０は、データを一時的に記憶するためのメモリである。すなわち、バッファ１７０は、記憶部に相当する。
【００６９】
転送部１１０は、ルート端末から、この通信端末１００へと送信される第１制御データ、第２制御データ等を受信する。第１制御データは、例えば、ＡＬＭ配信木の構造等を制御するためのデータである。第２制御データは、例えば、ＡＬＭ配信木における２つの端末の入替えを指示するためのデータである。
【００７０】
前述したように、端末の入替えとは、ＡＬＭ配信木における２つの端末の位置の入替え（交換）である。以下においては、ＡＬＭ配信木における２つの端末の入替えを、第１処理ともいう。
【００７１】
転送部１１０は、第１制御データ又は第２制御データに応じて、データの転送先を変更するようにマルチキャスト部１２０を制御する。
【００７２】
マルチキャスト部１２０は、親端末から順次送信されるストリームデータを受信する。すなわち、マルチキャスト部１２０は、通信部である。つまり、この通信端末１００（自端末）よりも、前記ＡＬＭ配信木においてより上位の端末（親端末）がある。本通信部は、このような、より上位の端末から、ストリームデータを順次受信する。
【００７３】
マルチキャスト部１２０は、ストリームデータを受信する毎に、当該ストリームデータを、子端末に送信する。すなわち、マルチキャスト部１２０は、受信した前記ストリームデータを、前記ＡＬＭ配信木においてこの通信端末１００（自端末）よりも下位の端末に送信する。
【００７４】
また、マルチキャスト部１２０は、ストリームデータを受信する毎に、当該ストリームデータを、バッファ１７０に格納する。すなわち、記憶部としてのバッファ１７０は、マルチキャスト部１２０が順次受信した前記ストリームデータを記憶する。
【００７５】
取得部１３０は、詳細は後述するが、次の処理をする。つまり、前記ＡＬＭ配信木においてこの通信端末１００（自端末）よりも下位の各端末がある。その処理では、このような、より下位の各端末間におけるデータ通信の遅延時間（ブランチ遅延）を取得する。
【００７６】
言い換えれば、取得部１３０は、次の処理をする。つまり、ＡＬＭ配信木において、この通信端末１００（自端末）から、該通信端末１００に対応する葉端末までの通信路がある。その処理では、この通信路に対応する各端末間におけるデータ通信の遅延時間（ブランチ遅延）を取得する。
【００７７】
そして、取得部１３０は、当該遅延時間を、この通信端末１００の親端末へ送信する。
【００７８】
算出部１４０は、詳細は後述するが、後述の再生遅延時間を算出する。
【００７９】
再生部１６０は、記憶部としてのバッファ１７０に記憶されたストリームデータを所定タイミングに順次再生する。なお、再生部１６０は、ｎ（自然数）番目のストリームデータがバッファ１７０に記憶されてから、後述の遅延時間Ｋだけ経過した所定タイミングに、当該ｎ番目のストリームデータの再生を開始する。
【００８０】
なお、ＡＬＭ配信木におけるルート端末及び葉端末の各々は、通信端末１００と同様な構成を有する。
【００８１】
以下においては、ＡＬＭ配信木において、ある端末から、当該端末の子端末又は親端末へ、データを送信するのに必要な時間を、ブランチ遅延ともいう。
【００８２】
例えば、端末２１が、当該端末２１の子端末（端末２３）へデータを送信するのに必要な時間は、ブランチ遅延である。ブランチ遅延は、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）の１／２に相当する。ＲＴＴとは、２つの端末の間において、データ（パケット）が往復するのに必要な時間である。
【００８３】
次に、ブランチ遅延を算出するための処理（以下、第２処理ともいう）について説明する。
【００８４】
第２処理は、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末及び葉端末以外の端末により行われる。第２処理は、他の処理とは独立して行われる。なお、ＡＬＭ配信木における複数の葉端末の各々は、所定時間経過毎に、空のメッセージを、当該葉端末の親端末へ送信する。所定時間は、例えば、５秒である。例えば、図６の端末２７は、所定時間経過毎に、空のメッセージを、端末２３へ送信する。端末２８〜端末３４の各々も、端末２７と同様に、親端末に、空のメッセージを送信する。
【００８５】
ここで、第２処理を行う端末は、一例として、端末２３であるとする。
【００８６】
図８は、第２処理のフローチャートである。
【００８７】
取得部１３０は、空のメッセージを受信すると、この取得部１３０を備える、図８の第２処理を実行する端末２３と、子端末（例えば、端末２７）の各々とのＲＴＴを測定する（Ｓ１１０）。ＲＴＴの測定は、ＲＴＣＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）を用いる方法等、公知なＲＴＴ測定方法により行われる。
【００８８】
そして、取得部１３０は、算出したＲＴＴの１／２の値を、ブランチ遅延として算出する。これにより、取得部１３０は、算出したブランチ遅延を取得する（Ｓ１１０）。取得部１３０は、上記のブランチ遅延を算出する処理を、全ての子端末（端末２７、２８）に対して行う。
【００８９】
ステップＳ１１０の処理により、端末２３の取得部１３０は、ＡＬＭ配信木において、この通信端末１００（自端末、端末２３）よりも下位の、それぞれの組合せの２つの端末間における、データ通信の遅延時間（ブランチ遅延）を取得する。
【００９０】
言い換えれば、端末２３の取得部１３０は、ＡＬＭ配信木において、この通信端末１００（自端末）から、該通信端末１００に対応する葉端末（例えば、端末２７）までの通信路に対応する、その通信路上にある、それぞれの組合せの２つの端末の間における、データ通信の遅延時間（ブランチ遅延）を取得する。当該２つの端末間は、例えば、端末２３と端末２７との間である。
【００９１】
以下においては、端末ｘと端末ｙとの間の、２つの端末間での遅延時間を、ブランチ遅延ＤＴ（ｘ，ｙ）とも表記する。また、ブランチ遅延ＤＴ（ｘ，ｙ）を、単に、ブランチ遅延ＤＴ、又は、ＤＴとも表記する。
【００９２】
この場合、端末２３の取得部１３０は、ステップＳ１１０の処理により、ＤＴ（２３，２７），ＤＴ（２３，２８）を取得する。例えば、ＤＴ（２３，２８）は、端末２３と端末２８との間のブランチ遅延である。
【００９３】
そして、端末２３の取得部１３０は、取得した全てのブランチ遅延（ＤＴ（２３，２７），ＤＴ（２３，２８））のうち、最も値が大きいブランチ遅延（例えばＤＴ（２３，２７））を示すメッセージを、親端末（端末２１）へ送信する（Ｓ１２０）。すなわち、取得部１３０は、ブランチ遅延を親端末へ送信する。
【００９４】
ここで、一例として、ＤＴ（２３，２８）は、ＤＴ（２３，２７）より大きいとする。この例では、上述のように、ＤＴ（２３，２７）が送信される。
【００９５】
図９Ａ及び図９Ｂのそれぞれは、メッセージの送信状態を示す図である。図９Ａは、第４階層の端末が、親端末へメッセージを送信している状態を示す。図９Ｂは、第３階層の端末が、親端末へメッセージを送信している様子を示す。
【００９６】
図１０は、メッセージの一例を示す図である。図１０において、メッセージＩＤ（図１０の表の第１列）とは、メッセージを特定するためのＩＤである。
【００９７】
図９Ａ及び図１０に示すように、端末２３の取得部１３０は、より大きい方であるＤＴ（２３，２８）を示すメッセージｍ１を、端末２１へ送信する。すなわち、端末２３は、ブランチ遅延ＤＴ（２３，２８）を、端末２１へ送信する。
【００９８】
なお、端末２４〜端末２６の各々も、端末２３が行う上記の処理と同様な処理を行う。
【００９９】
これにより、例えば、メッセージｍ２は、端末２１へ送信される。また、例えば、メッセージｍ４は、端末２２へ送信される。
【０１００】
なお、ＡＬＭ配信木における、ある端末の子端末が葉端末でない場合、当該端末は、第２処理において、以下の処理を行う。ここで、当該端末は、端末２１であるとする。
【０１０１】
端末２１の取得部１３０は、前述のステップＳ１１０の処理と同様に、次のブランチ遅延を取得する（Ｓ１１０）。つまり、端末２１と、自端末（端末２１）へメッセージを送信する、この端末２１の子端末との間のブランチ遅延である。この処理を、全ての子端末（端末２３、２４）に対して行う。これにより、取得部１３０は、ＤＴ（２１，２３）、ＤＴ（２１，２４）を取得する。
【０１０２】
そして、取得部１３０は、各受信したメッセージ毎に、受信したメッセージが示すＤＴ（例えばＤＴ（２１，２３））と、該メッセージに対応する、そのメッセージが取得された子端末（端末２３）から取得したブランチ遅延との合計値（以下、第１合計値ともいう）を算出する。
【０１０３】
端末２１の取得部１３０は、子端末から、ブランチ遅延を示すメッセージを受信することと、上記のステップＳ１１０の処理とにより、ＡＬＭ配信木における、この通信端末１００（自端末）よりも下位の、それぞれの組合せの２つの端末の間における、データ通信の遅延時間（ブランチ遅延）を取得する。言い換えれば、端末２１の取得部１３０は、ＡＬＭ配信木において、この通信端末１００（自端末）から、該通信端末１００に対応する葉端末（例えば、端末２９）までの通信路に対応する、それぞれの組合せの２つの端末の間における、データ通信の遅延時間（ブランチ遅延）を取得する。なお、１つ以上の組合せのそれぞれでは、当該組合せの上述の２つの端末には、この通信端末１００（自端末）も含まれる。
【０１０４】
次に、端末２１の取得部１３０は、算出した全ての第１合計値のうち、最も値が大きい第１合計値の算出に用いられた全てのＤＴを示すメッセージを、親端末（端末２０）へ送信する（Ｓ１２０）。すなわち、取得部１３０は、そのメッセージに含まれるそれぞれのＤＴ（ブランチ遅延）を親端末へ送信する。
【０１０５】
つまり、ステップＳ１１０、Ｓ１２０の処理を行う取得部１３０は、前記ＡＬＭ配信木においての、前記通信端末１００（自端末）と、該通信端末１００の子端末である第２の端末との間の遅延時間を測定し、測定した前記遅延時間を前記通信端末の親端末へ送信する。
【０１０６】
ここで、第２処理を行う端末が、例えば、端末２１であるとする。この場合、端末２１の取得部１３０は、次の遅延時間を受信する。その遅延時間は、この端末２１の子端末である第２の端末が測定した、当該第２の端末の子端末である第３の端末と、当該第２の端末との間の遅延時間である。端末２１の取得部１３０は、この遅延時間を、前記第２の端末から受信し、受信した前記遅延時間を、端末２１である通信端末１００（自端末）の親端末へ送信する。
【０１０７】
ここで、端末２３が、ＤＴ（２３，２８）を示すメッセージｍ１を端末２１へ送信し、端末２４が、ＤＴ（２４，２９）を示すメッセージｍ２を端末２１へ送信するとする。また、ＤＴ（２１，２４）＋ＤＴ（２４，２９）は、ＤＴ（２１，２３）＋ＤＴ（２３，２８）より大きいとする。
【０１０８】
この場合、図９Ｂに示すように、端末２１の取得部１３０は、より大きい方に含まれるＤＴであるＤＴ（２１，２４）、ＤＴ（２４，２９）を示すメッセージｍ５を、親端末（端末２０）へ送信する。
【０１０９】
また、端末２２も、端末２１が行う上記処理と同様な処理を行う。これにより、メッセージｍ６が、端末２０へ送信される。
【０１１０】
なお、上記処理においては、一方の端末が、ブランチ遅延を算出する対象である２つの端末のうちの１つである他方の端末は、一方の端末の子端末としたが、これに限定されない。ブランチ遅延を算出する対象である他方の端末は、一方の端末の親端末であってもよい。
【０１１１】
また、親端末である端末の子端末が葉端末である場合には、その葉端末による、空のメッセージの受信に応じて、ブランチ遅延を算出するとしたが、これに限定されない。子端末である当該端末は、空のメッセージを受信しなくても、所定時間毎に、ブランチ遅延を算出してもよい。
【０１１２】
なお、各階層の端末は、複数のブランチ遅延のうち、最も値が大きいブランチ遅延のみを、親端末へ送信するとしたがこれに限定されない。各階層の端末は、その端末が取得した複数のブランチ遅延の全てを、親端末へ送信してもよい。
【０１１３】
この場合、各端末は、その端末より下位での、いずれの組合せの２つの端末間におけるブランチ遅延も取得することができる。例えば、図９ＡのＡＬＭ配信木における、各階層の端末が、取得した、複数のブランチ遅延の全てを、親端末へ送信する構成が考えられる。
【０１１４】
図１１は、端末番号と、必要なＤＴとの関係を示す表である。
【０１１５】
上述の構成の場合、後述の再生遅延時間を算出するために、各端末（図１１の第１列）が受信することが必要なブランチ遅延（第２列）は、例えば、図１１に示すようになる。
【０１１６】
図１１において、必要なＤＴ（第２列）とは、そのＤＴに対応する端末番号（第１列）の端末が、後述の再生遅延時間を算出するために必要なＤＴである。例えば、端末２５（第１１行）は、後述の再生遅延時間を算出するために、ＤＴ（２５，３２）及びＤＴ（２５，３１）を必要とする。
【０１１７】
また、ブランチ遅延の取得方法は、図９Ａ及び図９Ｂでのような、処理が実行される位置が、下流から上流に流れる方法に限定されない。例えば、用いられる取得方法は、各端末が、測定したブランチ遅延を、その端末以外の全端末間に散布して、互いに散布し合う方法でも良い。
【０１１８】
また、例えば、各端末が、その端末と、その端末の親端末とのブランチ遅延、又は、その端末と、その端末に隣接する隣接端末とのブランチ遅延を測定し、それを、ルート端末へ個別に通知するようにしてもよい。そして、ルート端末が、各端末に対して、その端末に必要なブランチ遅延を個別に通知してもよい。また、ルート端末が、ＡＬＭ配信木を通じて、マルチキャストにより、各端末に通知をしても良い。また、ブランチ遅延の取得方法としては、これら以外の取得方法を用いても良い。
【０１１９】
次に、ストリームデータの再生を開始するタイミングを制御する処理（以下、第３処理ともいう）について説明する。
【０１２０】
第３処理は、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末以外の端末により行われる。第３処理は、他の処理とは独立して行われる。第３処理は、第１の実施形態に係る通信制御方法である。ここで、一例として、端末２０が、第３処理を行う場合の処理について説明する。
【０１２１】
図１２は、第３処理のフローチャートである。
【０１２２】
端末２０の取得部１３０は、前述のステップＳ１１０の処理と同様に、端末２０と、自端末（端末２０）へメッセージを送信する子端末との間のブランチ遅延を取得する（Ｓ２１０）。この処理を、全ての子端末（端末２１，２２）に対して行う。これにより、取得部１３０は、ＤＴ（２０，２１）及びＤＴ（２０，２２）を取得する。
【０１２３】
そして、取得部１３０は、各受信したメッセージ毎に、受信したメッセージが示すＤＴと、該メッセージに対応する、取得したブランチ遅延との合計値（以下、第１合計値ともいう）を算出する。
【０１２４】
以下においては、算出した全ての第１合計値のうち、最も値が大きい第１合計値を、第２合計値ともいう。
【０１２５】
そして、取得部１３０は、算出した全ての第１合計値のうち、最も値が大きい第１合計値（第２合計値）と、当該第２合計値の算出に使用された全てのブランチ遅延ＤＴとを、算出部１４０へ送信する。
【０１２６】
なお、ある端末の子端末が１つの場合、算出される第１合計値は、１つである。この場合、当該１つの第１合計値が、第２合計値である。
【０１２７】
以下においては、ＡＬＭ配信木における、ある端末から、葉端末までの通信路を、第１通信路ともいう。また、以下においては、ある端末が算出した第２合計値に対応する第１通信路を、第２通信路ともいう。つまり、ＡＬＭ配信木における、ルート端末以外の端末毎に、異なる第２通信路が対応する。すなわち、ＡＬＭ配信木には、複数の第２通信路が存在する。
【０１２８】
算出部１４０は、第２合計値に対応する第２通信路を特定する（Ｓ２２０）。
【０１２９】
ここで、前述の処理により、端末２１が、ＤＴ（２４，２９）及びＤＴ（２１，２４）を示すメッセージｍ５（図９Ｂ、図１０）を端末２０へ送信したとする。また、端末２２が、ＤＴ（２６，３３）及びＤＴ（２２，２６）を示すメッセージｍ６を端末２０へ送信したとする。また、ＤＴ（２４，２９）＋ＤＴ（２１，２４）＋ＤＴ（２０，２１）は、ＤＴ（２６，３３）＋ＤＴ（２２，２６）＋ＤＴ（２０，２２）より大きいとする。
【０１３０】
この場合、取得部１３０は、前者のＤＴ（２４，２９）＋ＤＴ（２１，２４）＋ＤＴ（２０，２１）により算出される、より大きい方の第２合計値と、この第２合計値に含まれる各ＤＴ（ＤＴ（２４，２９）、ＤＴ（２１，２４）及びＤＴ（２０，２１））とを、算出部１４０へ送信する。
【０１３１】
また、この場合、算出部１４０は、第２合計値の算出に使用された全てのＤＴ（ＤＴ（２４，２９）、ＤＴ（２１，２４）、ＤＴ（２０，２１））に対応する第２通信路を特定する。
【０１３２】
具体的には、算出部１４０は、ＤＴ（２４，２９）、ＤＴ（２１，２４）及びＤＴ（２０，２１）の各々の算出に使用された通信路を特定することにより、特定される各通信路の全てから構成される通信路を、第２通信路を特定する。この場合、第２通信路は、端末２０，２１，２４，２９を結ぶ通信路である。
【０１３３】
例えば、図６のＡＬＭ配信木において、端末２０に対応する葉端末の個数は複数（８個）である。この場合、端末２０に対応する複数の葉端末は、端末２７〜３０及び端末３１〜３４である。
【０１３４】
即ち、図６のＡＬＭ配信木において、上記の処理により算出された第２合計値は、次の値である。つまり、端末２０から、当該端末２０に対応する各葉端末までの複数の通信路がある。これらの複数の通信路のうちで、その通信路における、全ての組合せの２つの端末の間でのブランチ遅延の合計値が最も大きい通信路がある。上述の値は、この通信路に対応する上述の最も大きい値である。当該端末２０に対応する各葉端末は、端末２７〜３０及び端末３１〜３４である。
【０１３５】
なお、ＡＬＭ配信木の構成によっては、ＡＬＭ配信木を構成する複数の端末全てに対し、複数の葉端末が対応しない場合もある。例えば、図６のＡＬＭ配信木において、次の各端末が存在しないとする。つまり、第３階層〜第５階層にある端末２１〜３４のうちの、端末２１，２４，２９以外の各端末２３，２７，２８，３０，２２，２５，２６，３１，３２，３３，３４が存在しないとする。この場合、端末２０に対応する葉端末は、端末２９のみとなる。この場合、端末２０に対応する第１通信路の個数は１つである。この場合、端末２０に対応する１つの第１通信路は、第２通信路である。
【０１３６】
また、例えば、図６のＡＬＭ配信木において、次の各端末が存在しないとする。つまり、端末２３〜３０のうちで、端末２４，２９以外の各端末２３，２７，２８，３０が存在しないとする。この場合、端末２１に対応する葉端末は、端末２９のみとなる。この場合、端末２１に対応する第１通信路の個数は１つである。この場合、端末２１に対応する１つの第１通信路は、第２通信路である。
【０１３７】
図１３Ａ、図１３Ｂは、第２通信路の一部又は全てに対応する各端末の状態の一例を示す図である。
【０１３８】
図１３Ａは、第１処理が行われる前の、各端末の状態の一例を示す図である。
【０１３９】
図１３Ｂは、第１処理が行われた後の、各端末の状態の一例を示す図である。
【０１４０】
第１処理は、例えば、図１３Ａの状態において、ルート端末である端末Ｐ１から、第２制御データが、端末Ｐ２，Ｐ３，Ｐ４を順に経由して、端末Ｐ５へ送信されることにより行われる。例えば、当該第２制御データは、端末Ｐ２と、端末Ｐ５との入替えを指示するためのデータである。
【０１４１】
図１３Ａ、図１３Ｂにおける各構成要素は、図５Ａ及び図５Ｂで説明したので詳細な説明は繰り返さない。以下、簡単に説明する。それぞれの図において、シーケンス番号０〜１１を示すブロックは、ストリームデータ（パケット）を示す。以下においては、シーケンス番号を、単に、番号とも表記する。小さい番号を示すブロック程、時間的に、より古いストリームデータである。
【０１４２】
図１３Ａ、図１３Ｂでは、第２通信路の一部又は全てに対応する端末Ｐ１〜Ｐ５を示す。端末Ｐ１は、一例として、ルート端末である。端末Ｐ１は、ＡＬＭ配信木の第１階層の端末である。端末Ｐ２〜Ｐ５は、図１３Ａにおいて、それぞれ、第２〜第５階層の端末である。また、各端末と行方向に対応づけられた０個以上の番号は、当該端末のバッファに記憶されている０個以上のストリームデータのシーケンス番号を示す。例えば、図１３Ａの端末Ｐ２のバッファには、番号０〜９をそれぞれ示す１０個のストリームデータが格納されている。また、端末Ｐ５は、図１３Ａにおいて、葉端末であるとする。なお、端末Ｐ５は、葉端末でなくてもよい。
【０１４３】
ここで、端末Ｐ２は、端末２０（図６など）であるとする。この場合、上記処理により特定された第２通信路は、端末Ｐ２〜端末Ｐ５（葉端末）までの通信路である。
【０１４４】
再び、図１２を参照して、算出部１４０は、自端末から葉端末までの第２通信路に対応する第２合計値と、予め定められた遅延時間Ｋとの合計値を、自端末（端末２０）の再生遅延時間として算出する（Ｓ２３０）。遅延時間Ｋは、次のような時間である。その時間とは、連続する複数のストリームデータをシームレスに再生するために必要な時間であって、バッファにストリームデータを保持するための時間である。
【０１４５】
遅延時間Ｋは、例えば、３００ｍｓである。なお、葉端末である端末Ｐ５は、子端末を有さないため、この端末Ｐ５では、再生遅延時間は、遅延時間Ｋとなる。
【０１４６】
図１４は、各端末に対応する再生遅延時間の一例を示す図である。
【０１４７】
図１４において、端末ＩＤ（第１列）とは、端末を特定するＩＤである。例えば、第２行のＰ２は、端末Ｐ２を特定するＩＤである。図１４において、ＤＴ（ｘ，ｙ）は、前述と同様、端末ｘと端末ｙとの間のブランチ遅延である。例えば、ＤＴ（Ｐ２，Ｐ３）は、端末Ｐ２と端末Ｐ３との間のブランチ遅延である。端末Ｐ２が端末２０であり、端末Ｐ３が端末２１である場合、ＤＴ（Ｐ２，Ｐ３）は、ＤＴ（２０，２１）に相当する。
【０１４８】
図１４では、例えば、端末Ｐ３（第３行）の再生遅延時間は、ＤＴ（Ｐ３，Ｐ４）＋ＤＴ（Ｐ４，Ｐ５）＋遅延時間Ｋであることを示す。
【０１４９】
再び、図１２を参照して、算出部１４０は、算出した再生遅延時間を、制御部１５０へ送信する（Ｓ２４０）。
【０１５０】
ここで、前述したように、再生部１６０は、ｎ（自然数）番目のストリームデータがバッファ１７０に記憶されてから、遅延時間Ｋだけ経過した所定タイミングに、当該ｎ番目のストリームデータの再生を開始する。
【０１５１】
制御部１５０は、再生部１６０の再生制御を行う（Ｓ２５０）。具体的には、制御部１５０は、前記所定タイミングから、第２合計値以上の時間だけ遅いタイミングに、前記再生部１６０が前記ストリームデータの再生を開始するよう、前記再生部１６０を制御する。第２合計値は、前記取得部１３０により取得された、自端末（通信端末）から葉端末までの通信路（第２通信路）に対応する全ての前記遅延時間の合計値である。また、前記所定タイミングは、前記ストリームデータが前記記憶部（バッファ１７０）に記憶されてから、前記記憶部に該ストリームデータを保持するための所定時間（遅延時間Ｋ）だけ経過したタイミングである。
【０１５２】
より詳細には、制御部１５０は、第１指示を、再生部１６０へ送信する。
【０１５３】
第１指示は、ｎ番目のストリームデータがバッファ１７０に記憶されてから、再生遅延時間だけ遅いタイミングに、ｎ番目のストリームデータの再生を開始させるための指示である。再生遅延時間は、第２合計値と遅延時間Ｋとの合計値である。すなわち、第１指示は、前述の所定タイミングから、第２合計値以上の時間だけ遅いタイミングに、ｎ番目のストリームデータの再生を開始させるための指示である。
【０１５４】
ｎ＝１である場合、再生部１６０は、第１指示を受信すると、前述の所定タイミングから、第２合計値以上の時間だけ遅いタイミングに、１番目のストリームデータ（番号０のストリームデータ）の再生を開始する。
【０１５５】
なお、第２合計値以上の時間に限定されず、制御部１５０は、前記所定タイミングから、第２合計値だけ遅いタイミングに、前記再生部１６０が前記ストリームデータの再生を開始するよう、前記再生部１６０を制御するようにしてもよい。
【０１５６】
以上の第３処理が、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末以外の各端末により行われる。
【０１５７】
これにより、図１３Ａに示すように、第２通信路に対応する各端末におけるストリームデータの再生の開始のタイミング（時刻）を合わせることができる。図１３Ａ及び図１３Ｂにおいて、期間（時間）Ｔ１は、再生部１６０が、番号４を示すストリームデータを再生開始してから、番号９を示すストリームデータの再生が終了するまでに必要な時間である。期間（時間）Ｔ２は、第２階層の端末から送信されたストリームデータが第５階層の端末に到達するまでの時間である。なお、ステップＳ２５０の処理により、Ｔ２≦Ｔ１の関係が満たされる。
【０１５８】
図１３Ａの状態において、ストリームデータの再生中において、通信状況の悪化等により、端末Ｐ２と端末Ｐ５との入替えが行われたとする（図１３Ｂ参照）。すなわち、ストリームデータの再生中において、ＡＬＭ配信木の構成が変化したとする。
【０１５９】
この場合、第５階層に移動された端末Ｐ２は、番号４のストリームデータの再生を開始してから、番号９のストリームデータの再生が終了するまでに、番号１０のストリームデータを受信することができる。すなわち、端末Ｐ２が、番号９のストリームデータの再生が終了したときに、端末Ｐ２が番号１０のストリームデータを受信していないといった状態の発生を防ぐことができる。すなわち、ストリームデータの到着遅れを吸収することができる。
【０１６０】
これにより、ストリームデータの再生中に、ＡＬＭ配信木の構成が変化したとしても、シームレスなストリームデータの再生を実現することができる。
【０１６１】
なお、図１３Ａに示される端末Ｐ２〜Ｐ５のうち、いずれの２つの端末の入替えが行われた場合でも、第５階層に移動された端末Ｐ２と同様な効果を得ることができる。
【０１６２】
また、図１３Ａ、図１３Ｂに示される複数の端末（端末Ｐ１〜Ｐ５）のうち、第５階層の端末（例えば、図１３Ａの端末Ｐ５）は、葉端末でなくても、本実施形態の処理は実現可能である。すなわち、図１３Ａ、図１３Ｂにおいて、第６階層の端末が存在する場合でも、本実施形態の処理は実現可能である。
【０１６３】
以上説明したように、本実施の形態によれば、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末以外の各端末において、制御部１５０は、所定タイミングから、第２合計値以上の時間だけ遅いタイミングに、前記再生部１６０が前記ストリームデータの再生を開始するよう、前記再生部１６０を制御する。
【０１６４】
これにより、ＡＬＭ配信木における各第２通信路に対応する各端末における、ストリームデータの再生の開始のタイミング（時刻）を合わせることができる。これにより、ストリームデータの再生中に、ＡＬＭ配信木の構成が変化したとしても、シームレスなストリームデータの再生を実現することができる。
【０１６５】
具体的には、例えば、映像等の停止（スキップ）を防止することができる。すなわち、映像等の品質低下を防ぐことができる。言い換えれば、ＡＬＭ配信木を構成する各端末において再生される映像、音声の品質を高めることができる。
【０１６６】
なお、本実施の形態の第３処理では、第２通信路を利用したが、これに限定されない。第３処理では、例えば、２つの端末が入替わる可能性が最も高い経路、ランダムに選択した経路等を利用してもよい。
【０１６７】
また、第１処理が行われる前後の、各端末間のブランチ遅延（ネットワーク遅延）が同程度でない場合、ストリームデータの到着遅れの吸収率が低下することが考えられる。第１処理が行われる前後の、各端末間のブランチ遅延が同程度でない場合とは、例えば、図１３Ａの、第１処理が行われる前の、端末Ｐ２〜端末Ｐ５まの遅延時間と、図１３Ｂの、第１処理が行われた後の、端末Ｐ５〜端末Ｐ２での遅延時間とが大きく異なる場合である。
【０１６８】
ここで、第１処理が行われる前の、端末Ｐ２〜端末Ｐ５での遅延時間は、ＤＴ（Ｐ２，Ｐ３）＋ＤＴ（Ｐ３，Ｐ４）＋ＤＴ（Ｐ４，Ｐ５）＋Ｋである。第１処理が行われた後の、端末Ｐ５〜端末Ｐ２での遅延時間は、ＤＴ（Ｐ５，Ｐ３）＋ＤＴ（Ｐ３，Ｐ４）＋ＤＴ（Ｐ４，Ｐ２）＋Ｋである。ここで、図１３Ａ、図１３Ｂにおいて、例えば、ＤＴ（Ｐ２，Ｐ３）≠ＤＴ（Ｐ５，Ｐ３）、ＤＴ（Ｐ４，Ｐ５）≠ＤＴ（Ｐ４，Ｐ２）であるとする。
【０１６９】
そこで、ストリームデータの到着遅れの吸収率の低下を防ぐために、例えば、各端末間に対応するブランチ遅延に、自端末より下位の各端末間のブランチ遅延の最大値を加算した値を用いた処理を行ってもよい。
【０１７０】
また、例えば、各端末間に対応するブランチ遅延に、ＡＬＭ配信木における、各端末間に対応するブランチ遅延の最大値を加算した値を用いた処理を行ってもよい。また、例えば、各端末間に対応するブランチ遅延に、一定の値α（α≧０）を加算した値を用いた処理を行ってもよい。
【０１７１】
＜第１の実施形態の変形例１＞
第１の実施形態では、第１処理が行われる場合、第１処理が行われる前よりも、より下の階層に移動される端末（例えば、端末Ｐ２）がある。第１の実施形態では、この端末における、ストリームデータのシームレスな再生は実現できる。しかしながら、第１処理が行われる場合、第１処理が行われる前よりも、より上の階層に移動された端末においては、シームレスなストリームデータの再生を実現できない場合がある。例えば、ある端末が、あるときには、より下の階層に移動されると共に、別のときには、より上の階層に移動されることが考えられる。
【０１７２】
例えば、図１３Ｂにおいて、第１処理が行われた直後の端末Ｐ５は、番号１０のストリームデータを受信することになる。この場合、端末Ｐ５において、番号４〜９のストリームデータ（パケット）が不足する。以下においては、不足するストリームデータを、不足ストリームデータともいう。また、以下においては、不足ストリームデータを、不足パケットともいう。
【０１７３】
端末Ｐ５は、この不足ストリームデータを、変更された親端末（端末Ｐ１）から、再度送信してもらうこともできる。しかしながら、不足ストリームデータの数が多いために、端末Ｐ１の、データの送信容量の限界を超える場合、再度、端末Ｐ１により、不足ストリームデータを送信してもらうことが出来ないことがある。端末Ｐ１の、データの送信容量の限界を超える場合とは、例えば、図１３Ｂでの、端末Ｐ１と端末Ｐ５との間のネットワークの帯域が、限界に達する場合である。
【０１７４】
そこで、本実施形態の変形例１では、既に、不足ストリームデータを取得している端末が、当該不足ストリームデータを、不足ストリームデータが必要となる端末へ送信するようにする。例えば、第１処理により移動した直後の端末において発生する不足ストリームデータを、移動前においての、当該端末の親端末から送信してもらうようにする。
【０１７５】
なお、本実施形態の変形例１では、第１の実施形態の処理（例えば、第３処理）も実行される。
【０１７６】
本実施形態の変形例１における通信端末は、図７の通信端末１００である。
【０１７７】
本実施形態の変形例１における通信端末１００の転送部１１０は、詳細は後述するが、次のような処理をする。その処理では、ＡＬＭ配信木において、前記通信端末１００の下位の端末である第１の端末と、前記通信端末１００の上位の端末である第２の端末とが入れ替えられたことを検知する。そして、その処理では、この検知をして、前記通信部としてのマルチキャスト部１２０によっての、前記ストリームデータの転送先を、前記第１の端末から前記第２の端末に変更する。
【０１７８】
図１５Ａ、図１５Ｂは、それぞれ、本発明の第１の実施形態の変形例１における処理を説明するための図である。
【０１７９】
図１５Ａは、図１３Ａを、簡素化した図である。図１５Ａの端末Ｐ１〜Ｐ５は、それぞれ、図１３Ａの端末Ｐ１〜Ｐ５に相当する。
【０１８０】
図１５Ａにおいて、データＤ１０は、図１３Ａの番号４〜９のストリームデータに相当する。すなわち、データＤ１０は、複数の不足ストリームデータを含む。データＤ２０は、番号１０，１１のストリームデータ（図１３Ｂを参照）に相当する。
【０１８１】
図１５Ｂは、図１３Ｂを簡素化した図である。
【０１８２】
次に、第１処理が行われた直後の不足ストリームデータを送信するための処理（以下においては、第４処理ともいう）について説明する。
【０１８３】
図１６は、第４処理のフローチャートを示す。
【０１８４】
以下においては、第１処理が行われることにより、第１処理が行われる前よりも上の階層に移動された端末を、上階層移動端末ともいう。
【０１８５】
第４処理は、上階層移動端末が移動する前に、当該上階層移動端末の親端末であった端末（以下、元親端末ともいう）により行われる。
【０１８６】
ここで、一例として、通信状況の悪化等により、図１３Ａの状態において、ルート端末である端末Ｐ１から、第２制御データが、端末Ｐ２，Ｐ３，Ｐ４を順に経由して、端末Ｐ５へ送信されることにより、第１処理が行われたとする。当該第２制御データは、端末Ｐ２と端末Ｐ５との入替えを指示するためのデータであるとする。これにより、端末Ｐ２〜Ｐ５の各々は、端末Ｐ２と端末Ｐ５との入替えが行われることを把握する。
【０１８７】
この場合、図１３Ａで説明したように、端末Ｐ２と端末Ｐ５との入替え（第１処理）が行われる。この場合、端末Ｐ５は、上階層移動端末である。上階層移動端末の元親端末は、端末Ｐ４である。すなわち、第４処理は、端末Ｐ４により行われる。端末Ｐ４は、前述の第２制御データにより、端末Ｐ２と端末Ｐ５との入替えが行われることを把握している。すなわち、端末Ｐ４は、端末Ｐ５が、第２階層の端末になったことを把握している。また、端末Ｐ４は、第２制御データを受信した時点において、ＤＴ（Ｐ４，Ｐ５）等により、子端末である端末Ｐ５が取得しているストリームデータを把握している。例えば、ＤＴ（Ｐ４，Ｐ５）は、連続する２つのストリームデータが、端末Ｐ４から端末Ｐ５までに到達する時間より長いとする。
【０１８８】
この場合、端末Ｐ４は、第２制御データを受信したときに、端末Ｐ４が取得している最新のストリームデータが番号５のストリームデータである場合、端末Ｐ５が、番号１〜３までのストリームデータを取得していることを把握している。そして、第２制御データに応じて、端末Ｐ２と端末Ｐ５との入替えが行われることにより、端末Ｐ５が、第２階層の端末になったとする。ここで、第４処理は、一例として、端末Ｐ４が行うとする。
【０１８９】
図１３Ｂ、図１５Ａ，図１５Ｂ及び図１６を用いて、第４処理について説明する。
【０１９０】
まず、端末Ｐ４の転送部１１０は、第２制御データを受信することにより、端末Ｐ２と端末Ｐ５との入替えが行われたことを検知する。そして、端末Ｐ４の転送部１１０は、マルチキャスト部１２０のストリームデータの転送先（送信先）を、端末Ｐ２から端末Ｐ５に変更する（Ｓ３１０）。
【０１９１】
すなわち、転送部１１０は、次の処理をする。その処理では、前記ＡＬＭ配信木において前記通信端末１００の下位の端末である第１の端末（端末Ｐ２）と、前記通信端末１００の上位の端末である第２の端末（端末Ｐ５）とが入れ替えられたことを検知する。そして、その処理では、この検知をして、前記通信部としてのマルチキャスト部１２０のストリームデータの転送先を、前記第１の端末から前記第２の端末に変更する。
【０１９２】
そして、転送部１１０は、データＤ１０に相当する、番号４〜９の不足ストリームデータを、端末Ｐ５へ送信するように、マルチキャスト部１２０を制御する。これにより、マルチキャスト部１２０は、データＤ１０に相当する、番号４〜９の不足ストリームデータを、端末Ｐ５へ送信する（Ｓ３２０）。
【０１９３】
すなわち、ステップＳ３２０では、通信部（マルチキャスト部１２０）は、転送部１１０が、前記第１の端末と前記第２の端末とが入れ替えられたことを検知した場合に、次の処理をする。その処理では、前記第２の端末が取得しているストリームデータであって、かつ、前記第１の端末が取得している最新のストリームデータの次のストリームデータを、前記第１の端末へ送信する。
【０１９４】
不足ストリームデータの送信が終了すると、転送部１１０は、マルチキャスト部１２０の、ストリームデータの転送先（送信先）を、端末Ｐ５から端末Ｐ２に変更する（Ｓ３３０）。そして、マルチキャスト部１２０は、データＤ２０に相当する、番号１０，１１のストリームデータを、端末Ｐ２へ送信する（Ｓ３４０）。
【０１９５】
すなわち、ステップＳ３４０の処理により、通信部（マルチキャスト部１２０）は、前記次のストリームデータを前記第１の端末へ送信した後、前記第２の端末へ、新たなストリームデータを送信する。
【０１９６】
なお、不足ストリームデータが送信されている期間中には、端末Ｐ４の子端末（端末Ｐ２）に対して、ストリームデータが送信されない。しかしながら、このことは、問題にならない（図１３Ｂを参照）。なぜなら、端末Ｐ２は、番号４〜９のストリームデータを、端末Ｐ２のバッファ１７０に保持したまま、端末Ｐ４の下位層に移動しているためである。
【０１９７】
以上説明したように、第１の実施形態の変形例１によれば、通信端末１００は、第１の端末と第２の端末とが入れ替えられた場合に、前記第２の端末が取得しているストリームデータであって、かつ、前記第１の端末が取得している最新のストリームデータの次のストリームデータを、前記第１の端末へ送信する。
【０１９８】
そして、前記次のストリームデータを前記第１の端末へ送信した後、前記第２の端末へ、新たなストリームデータを送信する。ここで、第１の端末は、通信端末１００の下位の端末である。第２の端末は、通信端末１００の上位の端末である第２の端末である。
【０１９９】
これにより、ＡＬＭ配信木のルート端末からのストリームデータの送信量が多い場合でも、移動後の前記第１の端末へ、前記最新のストリームデータの次のストリームデータを、遅延することなく、送信することができる。その結果、通信端末１００より上位の階層に移動する前記第１の端末において、ストリームデータの再生が途切れるのを防止できる。
【０２００】
すなわち、通信端末１００より上位の階層に移動する前記第１の端末において、シームレスなストリームデータの再生を実現することができる。
【０２０１】
＜第１の実施形態の変形例２＞
なお、ＡＬＭ配信木においては、端末間の遅延時間の動的変更、又は、ＡＬＭ配信木の動的変更が発生した場合に、ＡＬＭ配信木に含まれる複数の第２通信路にそれぞれ対応する複数の第２合計値の少なくとも１つが変化されることが考えられる。
【０２０２】
この、第２合計値の変化に柔軟に対応するため、第１の実施形態の変形例２では、第１の実施形態の変形例１の処理に加え、さらに、ある端末に対応する第２通信路に対応する第２合計値の変化を検知した際に、次の調整を行う。その調整では、該第２合計値の変化に応じて、通信端末の再生遅延時間を調整する。
【０２０３】
図１７は、本発明の第１の実施形態の変形例２に係る通信端末１００Ａの構成を示す図である。通信端末１００Ａは、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末及び葉端末以外の端末である。
【０２０４】
図１７に示すように、通信端末１００Ａは、図７の通信端末１００と比較して、調整部１８０をさらに備える点が異なる。通信端末１００Ａのそれ以外の構成は、通信端末１００と同様なので詳細な説明は繰り返さない。
【０２０５】
第１の実施形態の変形例２において、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末及び葉端末以外の各端末（通信端末１００Ａ）は、第１の実施形態と同様に、第２処理を行う。
【０２０６】
また、ＡＬＭ配信木を構成する複数の端末のうち、ルート端末以外の端末である通信端末１００Ａは、第１の実施形態と同様に、他の処理とは独立して、図１２の第３処理を、所定時間毎に繰り返し行う。当該所定時間は、例えば、１分である。
【０２０７】
また、第３処理において、各通信端末１００Ａの取得部１３０は、ステップＳ２１０の処理において算出した第２合計値と、当該第２合計値の算出に使用された全てのブランチ遅延ＤＴとを、さらに、調整部１８０へも送信する。これにより、各端末の調整部１８０は、当該端末に対応する第２通信路に対応する第２合計値を常に把握している。
【０２０８】
そのため、各端末の調整部１８０は、第２合計値が変化した場合、変化した第２合計値に応じて、ｎ番目のストリームデータの再生時刻を変更するための指示を、制御部１５０へ送信する。
【０２０９】
次に、第２合計値が変化した場合における処理（以下、第５処理ともいう）について説明する。第５処理は、他の処理とは独立して行われる。
【０２１０】
図１８Ａ、図１８Ｂは、第５処理の一例を説明するための図である。
【０２１１】
図１８Ａは、図１３Ａを簡素化した図である。なお、図１８Ａは、一例として、次の状態を示す図である。その状態とは、図６に示されるＡＬＭ配信木のうち、第１〜第４階層までのＡＬＭ配信木における、ある第２通信路の一部又は全てに対応する各端末の状態である。図１８Ａの端末Ｐ１〜Ｐ４は、それぞれ、図１３Ａの端末Ｐ１〜Ｐ４に相当する。
【０２１２】
図１９は、第５処理のフローチャートである。
【０２１３】
ここで、第５処理は、一例として、端末Ｐ２が行うとして説明する。また、図１８Ａの、端末Ｐ２から端末Ｐ４までの経路は、第２通信路であるとする。
【０２１４】
端末Ｐ２の調整部１８０は、第２合計値が変化した場合（Ｓ４１０でＹＥＳ）、すなわち、遅延時間が変化した場合、ストリームデータの再生速度を変化させるための第６処理（Ｓ４２０）を行う。
【０２１５】
第６処理では、調整部１８０及び制御部１５０が、変化した第２合計値に応じた処理を行う。
【０２１６】
ここで、例えば、図１８Ａの端末Ｐ４（葉端末）の下位層に、図１８Ｂのように、端末Ｐ５が新たに増えたとする。この場合、端末Ｐ５が葉端末となる。また、図１８Ｂにおいて、端末Ｐ２〜端末Ｐ５の通信路が、一例として、第２通信路であるとすする。端末Ｐ５は、第１の実施形態と同様、所定時間経過毎に、空のメッセージを端末Ｐ４へ送信する。そして、端末Ｐ３，Ｐ４の各々が、第１の実施形態と同様に第２処理を行う。
【０２１７】
この場合、端末Ｐ２の調整部１８０は、第２合計値が増えたことを検出する。ここで、例えば、第２合計値が、１００ミリ秒増加したとする。
【０２１８】
この場合、調整部１８０は、第２指示を、制御部１５０へ送信する。第２指示は、再生部１６０が再生中のストリームデータの次のストリームデータの再生時刻を変更するための指示である。第２指示には、変更後の再生時刻も示される。変更後の再生時刻は、再生中のストリームデータの次のストリームデータの開始時刻に相当する。
【０２１９】
変更後の再生時刻は、調整部１８０が、第２合計値が変化する前の元の再生時刻を変化させた変化後の時刻である。例えば、第２合計値が、１００ミリ秒増加した場合、変更後の再生時刻は、元の再生時刻に１００ミリ秒を加算した時刻となる。また、例えば、第２合計値が、１００ミリ秒減少した場合、変更後の再生時刻は、元の再生時刻に、−１００ミリ秒を加算した時刻となる。
【０２２０】
すなわち、調整部１８０は、前記通信端末（自端末）よりも下位の端末の前記遅延時間（第２合計値）が変化した場合に、変化した遅延時間に応じて、再生中の前記ストリームデータの次のストリームデータの再生時刻を調整する。
【０２２１】
制御部１５０は、第２指示を受信すると、第２指示に従って、再生部１６０が再生中のストリームデータの次のストリームデータの再生時刻を、変更後の再生時刻となるように、再生部１６０を制御する。
【０２２２】
具体的には、制御部１５０は、（変更後の再生時刻−元の再生時刻）により得られる時間（以下、変化時間ともいう）に応じて、再生中のストリームデータの再生速度を変化させる。変化時間が正の値である場合は、第２合計値が増加した場合である。変化時間が負の値である場合は、第２合計値が減少した場合である。
【０２２３】
例えば、変化時間が正の値である場合、当該変化時間による、前記次のストリームデータの再生の不具合が生じないよう、当該変化時間にわたって、当該再生中のストリームデータの再生速度を遅くするよう、制御部１５０は、再生部１６０を制御する。例えば、変化時間による、前記次のストリームデータの再生の不具合は、ストリームデータの再生が一時的に停止するという不具合である。また、例えば、変化時間による、次のストリームデータの再生の不具合は、ストリームデータの一部の再生が欠落するという不具合である。
【０２２４】
また、例えば、変化時間が負の値である場合、当該変化時間による、次のストリームデータの再生の問題が生じないよう、当該再生中のストリームデータの再生速度を速くするよう、当該変化時間にわたって、制御部１５０は、再生部１６０を制御する。
【０２２５】
例えば、変化時間が１００ミリ秒である場合、制御部１５０は、１００ミリ秒間、例えば、０．９倍速で、ストリームデータを再生するように、再生部１６０を制御する。
【０２２６】
また、例えば、変化時間が−１００ミリ秒である場合、制御部１５０は、１００ミリ秒間、例えば、１．１倍速で、ストリームデータを再生するように、再生部１６０を制御する。
【０２２７】
第５処理は、端末Ｐ２以外の端末（例えば、端末Ｐ３，Ｐ４等）が行ってもよい。
【０２２８】
なお、変化時間が負の値である場合、すなわち、第２合計値が減少した場合、当該再生中のストリームデータの再生速度を速くする処理は行われなくてもよい。
【０２２９】
また、第５処理は、端末が増えた場合だけでなく、電源オフ等により、ＡＬＭ配信木から端末がなくなった場合においても適用可能である。また、第５処理は、端末の数が変化することなく、例えば、ある２つの端末間の通信路のネットワーク負荷が増加することにより、第２合計値が変化した場合であっても適用可能である。
【０２３０】
以上説明したように、第１の実施形態の変形例２によれば、第１のストリームデータの再生中に、通信端末の下位の端末がなくなった場合、又は、通信端末の下位に新たに端末追加された場合にも、柔軟に対応できる。その結果、シームレスな、ストリームデータの再生を実現することができる。
【０２３１】
なお、第１の実施形態の変形例２では、第１の実施形態の変形例１と同様に、第４処理も行われる。
【０２３２】
＜第２の実施形態＞
さらに、前記実施の形態及びその変形例で示した通信制御方法を実現するためのプログラムを、フレキシブルディスク等の記録媒体に記録するようにすることにより、前記実施の形態及びその変形例で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
【０２３３】
図２０Ａ〜図２０Ｃは、前記実施形態及びその変形例の通信制御方法を、フレキシブルディスク等の記録媒体に記録されたプログラムを用いて、コンピュータシステムにより実施する場合の説明図である。
【０２３４】
図２０Ａは、記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示している。図２０Ｂは、フレキシブルディスクＦＤと、そのケースＦとの、正面からみた外観、断面構造、及びフレキシブルディスクＦＤを示す。フレキシブルディスクＦＤは、ケースＦ内に内蔵され、該ディスクの表面には、同心円状に、外周から内周に向かって複数のトラックＴｒが形成され、各トラックは角度方向に１６のセクタＳｅに分割されている。従って、前記プログラムを格納したフレキシブルディスクＦＤでは、前記フレキシブルディスクＦＤ上に割り当てられた領域に、前記プログラムが記録されている。
【０２３５】
また、図２０Ｃは、フレキシブルディスクＦＤにおける、前記プログラムの記録再生を行うための構成を示す。通信制御方法を実現する前記プログラムをフレキシブルディスクＦＤに記録する場合には、コンピュータシステムＣｓから、前記プログラムを、フレキシブルディスクドライブＦＤＤを介して書き込む。また、フレキシブルディスクＦＤ内のプログラムにより通信制御方法をコンピュータシステム中に構築する場合は、フレキシブルディスクドライブＦＤＤによりプログラムをフレキシブルディスクＦＤから読み出し、コンピュータシステムＣｓに転送する。
【０２３６】
なお、前記説明では、記録媒体としてフレキシブルディスクを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、ＩＣカード、ＲＯＭカセット等、プログラムを記録できるものであれば同様に実施することができる。
【０２３７】
（機能ブロック図）
図２１は、通信端末２００の特徴的な機能構成を示すブロック図である。通信端末２００は、通信端末１００，１００Ａのいずれかに相当する。つまり、図２１は、通信端末１００，１００Ａのいずれかの有する機能のうち、本発明に関わる主要な機能を示すブロック図である。
【０２３８】
通信端末２００は、ストリームデータの再生中において動的に構成が変更可能なＡＬＭ（Application Layer Multicast）配信木を構成する複数の端末のいずれかの端末である。
【０２３９】
通信端末２００は、機能的には、通信部２１０と、記憶部２２０と、再生部２３０と、取得部２４０と、制御部２５０とを備える。
【０２４０】
通信部２１０は、前記ＡＬＭ配信木において前記通信端末２００よりも上位の端末から、ストリームデータを順次受信する。通信部２１０は、図７又は図１７のマルチキャスト部１２０に相当する。
【０２４１】
記憶部２２０は、通信部２１０が順次受信した前記ストリームデータを記憶する。記憶部２２０は、図７又は図１７のバッファ１７０に相当する。
【０２４２】
再生部２３０は、前記記憶部２２０に記憶されたストリームデータを所定タイミングに順次再生する機能を有する。再生部２３０は、図７又は図１７の再生部１６０に相当する。
【０２４３】
通信部２１０は、さらに、受信した前記ストリームデータを、前記ＡＬＭ配信木において前記通信端末２００よりも下位の端末に送信する。
【０２４４】
取得部２４０は、前記ＡＬＭ配信木において前記通信端末２００よりも下位の各端末間におけるデータ通信の遅延時間を取得する。取得部２４０は、図７又は図１７の取得部１３０に相当する。
【０２４５】
制御部２５０は、次の制御をする。つまり、前記所定タイミングから、次の時間だけ遅いタイミングがある。その時間とは、前記取得部により取得された、前記通信端末２００から葉端末までの通信路に対応する全ての前記遅延時間の合計値以上の時間である。その制御では、前記所定タイミングからこの時間だけ遅いタイミングに、前記再生部２３０が前記ストリームデータの再生を開始するよう、前記再生部２３０を制御する。制御部２５０は、図７又は図１７の制御部１５０に相当する。
【０２４６】
なお、通信端末２００に含まれる、通信部２１０、記憶部２２０、再生部２３０、取得部２４０及び制御部２５０の全て又は一部は、ＬＳＩ（Large Scale Integration：大規模集積回路）等のハードウエアで構成されてもよい。また、通信部２１０、記憶部２２０、再生部２３０、取得部２４０及び制御部２５０の全て又は一部は、ＣＰＵ等のプロセッサにより実行されるプログラムのモジュールであってもよい。
【０２４７】
また、通信端末２００は、集積回路であってもよい。
【０２４８】
（その他の変形例）
以上、本発明に係る通信端末及び通信制御方法について、前記各実施の形態に基づいて説明したが、本発明は、これら実施の形態に限定されるものではない。本発明の主旨を逸脱しない範囲内で、当業者が思いつく変形を本実施の形態に施したものも、本発明に含まれる。
【０２４９】
上記各実施形態で用いた全ての数値は、本発明を具体的に説明するための一例の数値である。すなわち、本発明は、上記実施形態で用いた各数値に制限されない。
【０２５０】
また、本発明に係る通信制御方法は、例えば、図１２の第３処理に相当する。また、本発明に係る通信制御方法は、例えば、図１２の第３処理、図１６の第４処理及び図１９の第５処理の各々が独立して行われる処理に相当する。本発明に係る通信制御方法は、図１２、図１６及び図１９における、対応する全てのステップを必ずしも含む必要はない。すなわち、本発明に係る通信制御方法は、本発明の効果を実現できる最小限のステップのみを含めばよい。例えば、図１２の第３処理では、ステップＳ２１０，Ｓ２５０のみが行われてもよい。
【０２５１】
また、通信制御方法における各ステップの実行される順序は、本発明を具体的に説明するための一例であり、上記以外の順序であってもよい。また、通信制御方法におけるステップの一部と、他のステップとは、互いに独立して並列に実行されてもよい。
【０２５２】
例えば、通信制御方法としての、図１２の第３処理において、ステップＳ２１０の処理と、ステップＳ２２０〜Ｓ２５０の処理とは、互いに独立して並列に実行されてもよい。
【０２５３】
なお、通信端末１００，１００Ａの各構成要素の全て又は一部は典型的には集積回路であるＬＳＩ（Large Scale Integration）として実現されてもよい。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。
【０２５４】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ（Integrated Circuit）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０２５５】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０２５６】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能パッチの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０２５７】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【産業上の利用可能性】
【０２５８】
本発明は、映像、音声の再生品質を高めることができるＡＬＭ技術を利用した映像配信や遠隔講義システム等で利用可能である。
【符号の説明】
【０２５９】
Ｄ１０  データ
１１，１２，１３，１４，１５，１６，１７，Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５，Ｒ１０  端末
１００，１００Ａ，２００  通信端末
１１０  転送部
１２０  マルチキャスト部
１３０，２４０  取得部
１４０  算出部
１５０，２５０  制御部
１６０，２３０  再生部
１７０  バッファ
１８０  調整部
２１０  通信部
２２０  記憶部
【図１】
0005861085.tif 000002
【図２】
0005861085.tif 000003
【図３】
0005861085.tif 000004
【図４】
0005861085.tif 000005
【図５Ａ】
0005861085.tif 000006
【図５Ｂ】
0005861085.tif 000007
【図６】
0005861085.tif 000008
【図７】
0005861085.tif 000009
【図８】
0005861085.tif 000010
【図９Ａ】
0005861085.tif 000011
【図９Ｂ】
0005861085.tif 000012
【図１０】
0005861085.tif 000013
【図１１】
0005861085.tif 000014
【図１２】
0005861085.tif 000015
【図１３Ａ】
0005861085.tif 000016
【図１３Ｂ】
0005861085.tif 000017
【図１４】
0005861085.tif 000018
【図１５Ａ】
0005861085.tif 000019
【図１５Ｂ】
0005861085.tif 000020
【図１６】
0005861085.tif 000021
【図１７】
0005861085.tif 000022
【図１８Ａ】
0005861085.tif 000023
【図１８Ｂ】
0005861085.tif 000024
【図１９】
0005861085.tif 000025
【図２０Ａ】
0005861085.tif 000026
【図２０Ｂ】
0005861085.tif 000027
【図２０Ｃ】
0005861085.tif 000028
【図２１】
0005861085.tif 000029