以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施形態は、P2Pを用いたツリー構造によるコンテンツ配信システムであって、放送形式でコンテンツ配信装置から配信されるコンテンツデータを、ツリー状階層構造を構成する端末装置がP2Pを用いて受信する放送形式のコンテンツ配信システムに対して本発明を適用した場合の実施形態である。
(第1実施形態)
[1.コンテンツ配信システムの構成等]
まず、図1を参照して、第1実施形態におけるコンテンツ配信システムSの概要構成等について説明する。
図1は、第1実施形態に係るコンテンツ配信システムSの概要構成例を示す図である。図1に示すように、第1実施形態に係るコンテンツ配信システムSは、放送形式のコンテンツ配信システムであり、複数のコンテンツデータをそれぞれ別個にストリーミング配信するための複数の配信チャンネル(以下、単に「チャンネル」と呼ぶ、)を有している。たとえば、チャンネルch1は、コンテンツ配信装置1を頂点として複数の端末装置2a1,2a2,2b1〜2b4,2c1〜2c8が論理的にツリー状階層構造で接続されており、コンテンツ配信装置1からコンテンツデータが当該ツリー構造の上層から下層にかけてストリーミング配信されるように構成される。他のチャンネルにおいても、同様な構成をとる。
また、コンテンツ配信システムSには、接続管理装置3が設けられており、この接続管理装置3が各チャンネルのツリー状階層構造を管理する。
コンテンツ配信装置1、端末装置2a1,2a2,2b1〜2b4,2c1〜2c8、接続管理装置3には、各々IPアドレスが割り当てられており、これら装置は、ネットワークの一例としてのインターネット4にルータ10等を介して接続されている。すなわち、目的の接続先端末装置のIPアドレスを宛先IPアドレス、自装置のIPアドレスを送信元IPアドレスとしたヘッダを含むパケットを送信することによって通信接続が可能となっている。
なお、接続管理装置3をコンテンツ配信装置1の内部に有することとしてもよい。この場合には接続管理装置3にはIPアドレスは割り当てなくてもよく、コンテンツ配信装置1のIPアドレスと共用するようにしてもよい。また、コンテンツ配信装置1は、コンテンツ配信システムSを構成する複数のチャンネル(ここでは、チャンネルch1〜チャンネルchnとする。)の全てのチャンネルのコンテンツデータを配信するものとしてもよく、それぞれのチャンネル毎にコンテンツ配信装置1が設けられるようにしてもよい。第1実施形態においては、一つのコンテンツ配信装置1が全てのチャンネルch1〜chnのコンテンツデータをストリーミング配信するものとして説明する。
また、端末装置2a1,2a2,2b1〜2b4,2c1〜2c8のいずれかの端末装置又はすべての端末装置を示す場合には、便宜上、端末装置2という場合がある。また、第1階層の端末装置2a1,2a2は便宜上端末装置2aと、第2階層の端末装置2b1〜2b4は便宜上端末装置2bと、第2階層の端末装置2c1〜2c8は便宜上端末装置2cという場合がある。
このコンテンツ配信システムSは、コンテンツ配信装置1を頂点(ここでは、便宜上第0階層とする。)として複数の端末装置2がツリー状階層構造で多層に論理接続されるように接続管理装置3によって管理される。なお、第1実施形態においては、ツリー状階層構造として説明するが、これに限られず、複数の端末装置2がチェーン状の階層構造で多層に論理接続されるようにしてもよい。
接続管理装置3は、コンテンツ配信システムSに参加していない端末装置2、言い換えればツリー状階層構造を構成していない端末装置2から接続先紹介要求を受信すると、コンテンツ配信システムSのツリー状階層構造の状態等に基づいて、その端末装置2がストリーミング配信を受けるための上流の装置として接続する接続先候補(コンテンツ配信装置1又は端末装置2)を選択する。そして、接続管理装置3は、このように選択した接続先候補の所在情報(接続先候補のIPアドレスやポート番号など)及び通信プロトコル等を端末装置2に通知する。
なお、コンテンツ配信システムSにおいて、すでに通信プロトコルやポート番号が固定されているときには、端末装置2へのポート番号及び通信プロトコルは通知しなくてもよい。ここで、通信プロトコルとして、MMS(Microsoft Media Server)プロトコル、RTSP(Real Time Streaming Protocol)等が用いられる。また、コンテンツデータの形式として、ASF(Advanced Streaming Format)、WMA(Windows(登録商標) Media Audio)、WMV(Windows(登録商標) Media Video)等が用いられる。
端末装置2は、接続管理装置3から接続先候補の所在情報を受信すると、その所在情報を宛先として接続先候補に対し、コンテンツ配信システムSへの参加(接続)を要求し、これにより端末装置2がコンテンツ配信システムSにおける階層構造へ組み込まれる。すなわち、端末装置2はコンテンツ配信装置1から配信されるコンテンツデータを受信可能となる。なお、コンテンツ配信システムSへの参加は、コンテンツ配信装置1の各チャンネル毎に行われるものであり、端末装置2は各チャンネル毎に参加を行い、参加を行ったチャンネルのコンテンツデータを受信することになる。ここで、チャンネルへの参加とは、チャンネルに対応するコンテンツ配信装置1を頂点とする階層構造に参加することを意味し、このようにチャンネルに参加することによって、参加を行ったチャンネルのコンテンツデータを階層構造の上流の装置から受信することができる。また、「上流の装置」とは、階層構造において自端末装置2に接続されている上流の装置(端末装置2或いはコンテンツ配信装置1)を意味する。たとえば、図1における端末装置2b2における上流の端末装置とは、端末装置2a1を指す。
コンテンツ配信システムSは、このように端末装置2が次々と各チャンネルに参加することによって、各チャンネル毎にコンテンツ配信装置1を頂点として複数の端末装置2がツリー状階層構造で多層に論理接続される。そして、コンテンツ配信装置1からチャンネル毎に配信されるコンテンツデータは、端末装置2の中継機能により順次下層の端末装置2へ中継されて複数の端末装置2にストリーミング配信される。
すなわち、図1に示すように、チャンネルch1においては、コンテンツ配信装置1から端末装置2a1,2a2(第1層の端末装置)へコンテンツデータが送信され、端末装置2a1,2a2はコンテンツデータを受信すると、下層の端末装置2b1〜2b4(第2階層の端末装置)へ受信したコンテンツデータを順次中継する。端末装置2b1〜2b4はコンテンツデータを受信すると、下層の端末装置2c1〜2c8(第3階層の端末装置)へ受信したコンテンツデータを順次中継する。
なお、端末装置2は、組み込まれた階層構造の位置の上流の端末装置2又はコンテンツ配信装置1の所在情報と、その位置の下流の端末装置2の所在情報とを後述の第1記憶部202に記憶しており、このように記憶した所在情報に基づいて、コンテンツデータの中継を行なうようにしている。また、配信されるコンテンツデータは、複数のパケットに分割されて順次配信されるものであり、このようにパケットに分割されて配信されるデータをコンテンツパケットという。
このように端末装置2へ配信されるコンテンツデータは、チャンネル毎にコンテンツ配信システムSに参加しているすべての端末装置2へ配信される。配信されるコンテンツデータには、音楽や映画などコンテンツのデータのほか、再生時刻情報(以下、「再生時刻データ」という。)が含まれている。そして、コンテンツデータを受信した複数の端末装置2は、順次送信されるコンテンツデータの再生を再生時刻データに基づいて行なう。このようにして、コンテンツ配信システムSは、チャンネル毎にコンテンツ配信装置1から送信されたコンテンツデータが複数の端末装置2にストリーミング配信され、複数の端末装置2において同時刻にコンテンツを再生することができる。すなわち、コンテンツ配信システムSは、P2Pを用いて複数の端末装置2への放送形式のストリーミング配信を実現している。
上述のように第1実施形態におけるコンテンツ配信システムSは、複数のコンテンツデータをそれぞれストリーミング配信する複数のチャンネルを有している。端末装置2は、ユーザにより所望のチャンネルが選択されると、選択したチャンネルにおける自端末装置2の接続先装置(以下、「接続先候補」とする。)を接続管理装置3から取得する。そして、端末装置2は、その接続先候補に接続することによって所望のチャンネルの階層構造に参加し、この階層構造における自端末装置2の上流の装置からコンテンツデータを受信し、再生する。
次にこのように端末装置2が、あるチャンネルの階層構造に参加した後、この端末装置2のユーザが視聴(再生)するチャンネルを切替える場合について説明する。ユーザがチャンネルを切替える選択を行った場合、従来のコンテンツ配信システムSでは、端末装置2は参加しているチャンネルの階層構造から脱退し、切替えの選択を行ったチャンネルの階層構造への参加を上述の手順で行っていた。
この場合参加しているあるチャンネルの階層構造から別のチャンネル階層構造への参加する際には、接続管理装置3から接続先候補の情報を受け取るための処理、及びその接続先候補へ接続するための処理等の一連の接続処理を行う必要がある。このため、従来のコンテンツ配信システムSでは、切替え先のチャンネルのコンテンツデータを受信して再生するまでの時間、コンテンツデータが再生されない状態が発生し、端末装置2のユーザの操作性を低下させていた。
そこで、第1実施形態における端末装置2においては、複数のチャンネルの階層構造への参加を継続して行うことにより、端末装置2においてチャンネルが切替えられた場合であっても、コンテンツデータの再生されない期間を発生させないようにしている。すなわち、端末装置2は、複数のチャンネルにそれぞれ参加している他の端末装置2との接続(セッション)を確立し、それらの接続を継続するのである。
端末装置2には、ストリーミングで配信される複数のチャンネルのコンテンツデータを受信し、再生或いは下流の端末装置2へ中継することができるように、それぞれのチャンネルのコンテンツデータを一時的に蓄積するリングバッファ領域をRAMなどの記憶装置に設定するようにしている。ここで、「下流の端末装置」とは、階層構造における自端末装置2に接続されている下流の端末装置を意味する。たとえば、図1における端末装置2b2における下流の端末装置とは、端末装置2c3,2c4を指す。
ところで、同時に接続するチャンネル、すなわち同時に参加するチャンネルが多くなってくると、それに伴って用意すべきリングバッファ領域の数が増え、必要となる記憶領域が増大してしまうことになる。セットトップボックスやデジタル家電のように記憶領域が少ない端末装置においては、このように複数のリングバッファ領域を設定するのは負担が大きく、限界がある。
そこで、第1実施形態における端末装置2においては、再生のために選択されたチャンネルに対応するリングバッファ領域以外のリングバッファ領域のバッファ容量(以下、「リングバッファ容量」と呼ぶことがある。)を小さくしている。すなわち、複数のリングバッファ領域のうち、再生状態でないチャンネルに対応するリングバッファ領域のバッファ容量を、再生状態のチャンネルに対応するリングバッファ領域のバッファ容量よりも小さくするのである。
ここで、端末装置2におけるリングバッファ領域について説明する。図2は、第1実施形態の端末装置2におけるリングバッファ領域を用いてコンテンツデータを受信し、再生或いは下流の端末装置2へ中継する構成を概念的に表した図である。
端末装置2は、所望のチャンネルの階層構造に参加したときに、この階層構造の上流の装置からストリーミングで送信されるコンテンツパケットをストリーム受信器によって順次受信し、受信したコンテンツパケットに含まれるコンテンツデータをリングバッファ領域に一時的に蓄積する。リングバッファ領域に一時的に蓄積されたコンテンツデータは、その再生時刻になると、端末装置2の再生手段であるプレイヤによってリングバッファ領域から取り出されて再生される。
ここで、図2に示すように、リングバッファ領域には時計回りの方向で新しいコンテンツデータが順次蓄積され、最も古いコンテンツデータが新しいコンテンツデータに書き換わるように構成されている。すなわち、ストリーム受信器によってリングバッファ領域に書き込まれるポイントをAとすると、このポイントAが時計回りに移動していくのである。
なお、図2におけるリングバッファ領域は概念的に示したものであり、実際にリング形状をしているのではなく、端末装置2の制御手段が、記憶領域における所定アドレス領域に蓄積した最も古いコンテンツデータを順次新しいコンテンツデータに書き換えることにより実現するものである。
また、コンテンツデータには上述のように再生時刻情報が格納されており、プレイヤはリングバッファ領域に蓄積したコンテンツデータのうち、現時刻と合致する再生時刻データを有するコンテンツデータ(ここでは、図2中Bのポイントのコンテンツデータ)をリングバッファ領域から取り出して順次再生する。
このようなリングバッファ領域によって、再生時刻前のコンテンツデータを蓄積しながら、再生時刻までにインターネット4の状態に依存して間欠的に発生するコンテンツパケットの損失に対処する。言い換えれば、コンテンツ配信装置1は、パケットの損失補完処理を行えるだけのマージンを確保しながらコンテンツデータを配信している。
ここで、階層構造の下流に他の端末装置2が2台接続されている場合、図2に示すように、端末装置2に2つのストリーム送信器が設けられる。このストリーム送信器は、リングバッファ領域に格納されているコンテンツデータを所定量毎にコンテンツパケットのデータ領域に格納してコンテンツパケットを生成し、それぞれ下流に接続された他の端末装置2へこのコンテンツパケットを順次送信する。
なお、第1実施形態における端末装置2では、上流の装置から送信されるコンテンツパケットに含まれるコンテンツデータを取り出してリングバッファ領域に蓄積するようにしているが、コンテンツパケットをそのままリングバッファ領域に蓄積するようにしてもよい。いずれにせよ、ストリーム送信器は、ストリーム受信器によって受信したコンテンツパケットの送信先及び送信元の情報を置き換えたコンテンツパケットを下流の端末装置2に送信することになる。
ところで、端末装置2のユーザは、コンテンツ配信装置1からストリーミング配信されているコンテンツデータを視聴しているとき、再生時間を経過したコンテンツデータについて任意の位置から再生したいと考える場合がある。いわゆるトリックプレイである。図2に示すリングバッファ領域の例では反時計回りにポイントBからポイントCにかけてのバッファ領域Xについてトリックプレイが可能である。
以上に示すように、端末装置2は、コンテンツデータを一時的に蓄積するリングバッファ領域を設けることによって、コンテンツパケットをプリバッファリングしながらパケット損失に対する補完を行い、インターネット4の経路上で発生するパケット損失の影響を回避するようにしている。
また、リングバッファ領域のバッファ容量を上記プリバッファリングのためのバッファ容量よりも大きくすることによって、端末装置2のユーザの操作によって、再生時刻を経過したコンテンツデータに対してトリックプレイを行えるようになる。
第1実施形態における端末装置2では、複数のチャンネルのコンテンツデータをそれぞれ一時的に蓄積する複数のリングバッファ領域を記憶領域に設定することができるように構成されており、さらに、これらのリングバッファ領域のバッファ容量を再生状況に応じたバッファ容量としている。
図3は、リングバッファ領域のバッファ容量の分配を説明するための図であり、チャンネルch1〜ch3の3つのチャンネルのコンテンツデータをそれぞれ第1〜第3リングバッファ領域で受信している例を示しているものである。この例では、チャンネルch1の再生頻度(視聴頻度)が高く、チャンネルch2,3の再生頻度(視聴頻度)が低いため、第2,第3リングバッファ領域のバッファ容量を第1リングバッファ領域のバッファ容量に比べて小さくしている状態が示されている。
ここで、再生状況に応じたバッファ容量とするための条件として、上述のように再生頻度がある。この再生頻度には、各チャンネルにおける単位時間当りのコンテンツデータの再生回数や再生時間などがある。
再生回数が少ないほど、或いは再生時間が短いほどリングバッファ領域のバッファ容量を小さくすることにより、あまり使用されない(すなわち、再生回数や再生時間が少ない)チャンネルのリングバッファ領域のバッファ容量を小さくすることができる。
また、再生状況を定期的に或いは所定契機で検出して、リングバッファ領域のバッファ容量を更新するようにしており、最新の再生状況に応じたリングバッファ領域のバッファ容量の分配を行うことができる。
このように第1実施形態における端末装置2においては、リングバッファ領域のバッファ容量を再生状況に応じたバッファ容量とすることで、リングバッファ領域を設定するために必要な記憶領域を可及的に小さくしている、これによりリングバッファ領域を設定することができる記憶領域の容量が小さな端末装置において記憶領域を効率的に使用することが可能となる。
すなわち、複数のリングバッファ領域を記憶領域に設定し複数のチャンネルとの接続を保つことによってユーザによるチャンネル切替え時の接続処理を不要としてコンテンツデータ再生の空白期間をなくしつつ、リングバッファ領域による記憶領域の占有率を総体的に抑制することができるのである。
ところで、上述したように、同時に接続するチャンネルが多くなってくると、それに伴って用意すべきリングバッファ領域の数が増え、必要となる記憶領域が増大してしまう。
そこで、第1実施形態における端末装置2においては、上述のように再生状態と非再生状態とでリングバッファ領域のバッファ容量を変えることに加え、記憶領域に設定するリングバッファ領域の数を制限するようにしている。たとえば、同時に接続することができるチャンネルを10チャンネルと定めるのである。
このように同時に接続するチャンネル数に制限を設けることで、無制限にリングバッファ領域が増大するのを防止している。
このように構成された端末装置2においては、上限数のチャンネルに接続している状態でさらに新規チャンネルに接続すべき状態が発生すると、非再生状態にあるチャンネルであってかつ所定条件を満たすチャンネルとの接続を切断してリングバッファ領域を記憶領域から取り除く。そして、端末装置2は、新規チャンネルのリングバッファ領域を記憶領域に設定すると共に、そのチャンネルに接続する。たとえば、新規チャンネルが選択されると、端末装置2は、非再生状態の継続時間が最も長いチャンネルに対応するリングバッファ領域を削除して新たに選択されたチャンネルに対応するリングバッファ領域を確保するのである。
また、第1実施形態の端末装置2では、接続を行うチャンネルは、ユーザによって選択されたチャンネルとする。すなわち、端末装置2のユーザが後述のチャンネル選択手段としてリモコン205等を操作することによって、端末装置2は、順次選択したチャンネルに接続していき、接続したチャンネルごとにリングバッファ領域を記憶手段に設定していくようにしている。
図4には、チャンネルch1に接続された端末装置2c1において、ユーザのリモコン等の操作によりチャンネルch1からチャンネルch2への切替えが指示され、端末装置2が、チャンネルch1の接続を継続しつつ、チャンネルch2への接続する様子が示されている。なお、チャンネルch2への接続は、接続管理装置3から通知される接続先候補に対して行う。図4に示す例では、接続先候補として、接続管理装置3から端末装置2d1が通知されている。
ここで、端末装置2c1が端末装置2e1として端末装置2d1に接続する前後の端末装置2c1のリングバッファ領域の様子を図5(a),(b)に示す。この図で示すように、端末装置2にはチャンネルch1のリングバッファ領域に加え、チャンネルch2のリングバッファ領域が記憶領域に設定されるが、各リングバッファ領域のバッファ容量は、チャンネルの再生状況に応じて設定される。
また、ユーザによる予めの選択によって、端末装置2の電源ON時に設定されたチャンネルに同時に接続するようにすることもできる。以下、端末装置2において、このように予め選択された複数のチャンネルに接続する動作について説明する。
まず、端末装置2のユーザは、後述のリモコン205の操作によって、電源ON時に接続するチャンネルを選択する。このように選択されたチャンネルの情報(たとえば、チャンネル番号)は、端末装置2の記憶手段に記憶される。そして、端末装置2の電源がONになると、端末装置2のプログラムの実行により、端末装置2は、記憶手段に記憶されたチャンネルの情報が取り出されて、これらのチャンネルに接続していく。
このように、ユーザによって予め選択されたチャンネルへの接続が電源ON時に行われるので、コンテンツデータが再生されない期間が発生せず、端末装置2のユーザは快適にコンテンツデータの視聴を行うことができる。
また、ユーザによる予めの設定に代えて、或いはユーザの予めの設定に加えて、端末装置2によって電源ON時に接続するチャンネルを選択するように構成することもできる。
たとえば、端末装置2の制御手段によって、ユーザが選択したチャンネルの再生時間や再生頻度などの再生履歴を検出し、この再生履歴を自端末装置2の記憶領域に記憶する。そして、端末装置2の電源ON時に、この再生履歴に基づいて、ユーザが視聴する可能性の高いチャンネルを制御手段が選択し、端末装置2は、このように選択したチャンネルに接続していくのである。
このように、電源ON時に接続しにいくチャンネルの選択を、再生履歴に基づいて行うことによって、ユーザによる予めの設定作業を軽減することができる。すなわち、チャンネル選択手段としてリモコン205ではなく、端末装置2に予め格納したプログラムとするのである。このように電源ON時に接続しにいくチャンネルは、言い換えれば、初期設定で予め決められたチャンネルとも言うことができる。
ところで、端末装置2がプリバッファリングしなければならないコンテンツデータのデータ量は、端末装置2が階層構造のどの位置に接続されるかによって変わってくる。
すなわち、端末装置2においてコンテンツパケットの中継処理のための配信経路、すなわち階層構造におけるコンテンツパケットのインターネット4上の配信経路において発生するコンテンツパケットの損失の補完処理を確実に行えるようにするために、上層の端末装置2ほどプリバッファリングの量を多くしなければならない。
たとえば、図1に示すように、階層構造が4層構造(コンテンツ配信装置1は第0階層とする)により構成されているとき、コンテンツ配信装置1から第1階層の端末装置2aまでの第1経路、第1階層の端末装置2aから第2階層の端末装置2bまでの第2経路、第2階層の端末装置2bから第3階層の端末装置2cまでの第3経路において、それぞれコンテンツパケットの損失の可能性があるが、この際、下流側の端末装置2で補完される損失パケットは上流側の端末装置2が保有している必要があるため、上流側の端末装置2ほどプリバッファリング量が多くなるように配信経路を形成する。
ここで、図6を参照して、各階層における装置のプリバッファリングについて説明する。
図6に示すように、端末装置2のリングバッファ領域においては、再送処理による送信遅延を考慮して、送受信ポイントと再生ポイントとの間にマージン(以下、「再生マージン」とする。)が必要である。すなわち、コンテンツ配信システムSは、1トラック当りのストリーム中継処理で発生する可能性がある再送時間を考慮した再生マージンをもってコンテンツデータの配信をしなければならない。この再生マージンとは、言い換えれば、コンテンツ配信装置1による1トラックのコンテンツ配信開始から配信終了までに消費してもよいコンテンツパケット損失に対する回復処理時間である。
図6(a)は、あるチャンネルの階層構造において、再送処理が発生しなかったときの端末装置2のリングバッファ領域の様子を示すものである。第1実施形態においては、1階層当たりの端末装置2の再生マージンが3パケット分に設定されている。この図の例では、未だ再送処理が発生していないため、最下層の端末装置2cでは再生ポイントと受信ポイントとに9パケット分の再生マージンが存在している。
一方、図6(b)に示すように、第1階層目の端末装置2aで2パケット分の再送処理が、第2階層目の端末装置2bで3パケット分の再送制御が発生したとき、最下層の端末装置2cでは再生マージンが4パケット分まで縮減する。すなわち、コンテンツ配信装置1から最下層の端末装置2cまでの経路で行なわれた累積再送時間分の再生マージンが最下層の端末装置2cまでに失われることを表している。
したがって、コンテンツパケットに格納された時刻情報によって、全ての端末装置2において同時刻にコンテンツデータの再生を行わせるためには、コンテンツ配信装置1から最下層の端末装置2cまでの経路において、コンテンツデータ1トラックのストリーム中継処理で発生する可能性がある再送時間をもった再生マージンが必要となり、この再生マージンを持つためのリングバッファ領域が必要となる。そして、上層の端末装置2ほどプリバッファリングの量を多くする必要がある。
そこで、第1実施形態における接続管理装置3は、各チャンネル毎に、そのチャンネルの階層構造を構成する端末装置2のリングバッファ領域のバッファ容量の情報を接続状態情報記憶手段に記憶しておき、階層構造を構成する端末装置2のリングバッファ領域のバッファ容量が階層構造の上流から下流にかけて小さくなるように各チャンネルの階層構造を管理するようにしている。
ここで、端末装置2における所定のチャンネル(ここでは、チャンネルch1とする。)への参加動作について図7を参照して説明する。図7に示すように、チャンネルch1に接続している各端末装置2は、それぞれ接続管理装置3に対して定期的にチャンネルch1に対応するリングバッファ領域のバッファ容量を定期的に通知する。
そして、端末装置2xがチャンネルch1に参加するために、接続管理装置3に接続先候補の通知を依頼する。このとき端末装置2xは、チャンネルch1に対応するリングバッファ領域のバッファ容量(ここでは、20MBとする。)も合わせて接続管理装置3へ通知する。
接続管理装置3は、端末装置2xから接続先候補の通知要求及びバッファ容量を受信すると、参加要求対象のチャンネルch1の階層構造を構成する端末装置2のうち、端末装置2xのバッファ容量よりも大きいリングバッファ領域のバッファ容量(ここでは、30MBとする。)を有する端末装置2b4を接続先候補として選択して、参加要求を行った端末装置2xへ通知する。なお、端末装置2a2のリングバッファ領域のバッファ容量も40MBと大きいが、接続管理装置3が選択する接続先候補は、端末装置2xのリングバッファ領域のバッファ容量に一番近いバッファ容量を持つ端末装置、すなわち端末装置2b4を選択することになる。
接続管理装置3から接続先候補の通知を受けた端末装置2は、通知された接続先候補である端末装置2b4への接続を行い、この端末装置2b4からチャンネルch1のコンテンツデータを受信して再生する。
他方、チャンネルの階層構造を構成する端末装置2では、接続しているチャンネルの階層構造において、自端末装置2の上流や下流にある端末装置2が有するリングバッファ領域のバッファ容量を取得し、自端末装置2のリングバッファ領域のバッファ容量と比較して、その階層構造における適切な位置に再接続を行うようにしている。
ここで、端末装置2における再接続動作について図8を参照して説明する。図8に示すように、チャンネルch1の階層構造に接続している端末装置2a2,2b4,2c8におけるそれぞれのリングバッファ領域のバッファ容量が40MB,10MB,20MBであるとする。
チャンネルch1の階層構造に接続している端末装置2b4は、自端末装置2の上流の端末装置2a2や下流の端末装置2c8に対して、これらの端末装置2a2,2c8のリングバッファ領域のバッファ容量を通知するように要求する。
この要求に対して端末装置2a2は、自端末装置2a2のリングバッファ領域のバッファ容量が40MBであることを端末装置2b4に通知する。端末装置2c8も同様に、自端末装置2c8のリングバッファ領域のバッファ容量が20MBであるであることを端末装置2b4に通知する。
端末装置2b4は、自己のリングバッファ領域のバッファ容量が下流の端末装置2c8よりも低いため、接続管理装置3に対して接続先候補の通知を要求する。接続管理装置3は上述のように、階層構造を構成する端末装置のリングバッファ領域のバッファ容量が階層構造の上流から下流にかけて小さくなるような位置の接続先候補(ここでは、端末装置2c5とする)を選択し、端末装置2b4に通知する。端末装置2b4は、接続管理装置3から通知を受けた接続先候補に接続をする。
このように、端末装置2は、自端末装置2の上流や下流にある端末装置2が有するリングバッファ領域のバッファ容量を取得し、自端末装置2のリングバッファ領域のバッファ容量と比較し、その階層構造における適切な位置に再接続を行うことで、コンテンツパケットの損失の補完処理を確実に行える。
以下、コンテンツ配信システムSを構成するコンテンツ配信装置1、端末装置2及び接続管理装置3についてそれらの具体的な構成及び動作について図面を参照して説明する。
[2.コンテンツ配信装置1の構成等の説明]
次に、図9を参照して、コンテンツ配信装置1の構成及び動作について説明する。
図9は、第1実施形態におけるコンテンツ配信装置1の概略構成例を示す図である。コンテンツ配信装置1は、一般のサーバコンピュータを適用可能であり、図9に示すように、CPU(Central Processing Unit)101と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての第1記憶部102と、各種データ等を記憶するHDD(Hard Disc Drive)等から構成された第2記憶部103と、インターネット4を介して端末装置2や接続管理装置3との間で通信を行うネットワークインターフェイス104と、所定の情報を入力可能なキーボード105やマウス106等の入力手段を制御する周辺機器制御チップ107と、CPU101からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述のディスプレイ109に表示するビデオチップ108と、ビデオチップ108から送信される信号に応じた表示を行うディスプレイ109と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ110と、音源チップ110から出力されるオーディオ信号を音波に変換する内蔵スピーカ111とを備えて構成され、これらの各種構成要素はシステムバス112を介して相互に接続されている。
なお、ネットワークインターフェイス104は、ルータ10aを介してインターネット4に接続される。
なお、第1実施形態においては、CPU101と第1記憶部102とで制御部113を構成している。また、コンテンツ配信装置1には、上述のようにディスプレイ(液晶ディスプレイ等)109等が接続されるようになっており、例えば、コンテンツ配信システムSを運用する放送運営者は、このディスプレイ109を見ながら入力手段から所定の情報を入力することができる。
(第1記憶部102について)
また、第1記憶部102には、コンテンツ配信装置1のコンピュータとしての基本的な機能を提供するためのOS(オペレーティングシステム)プログラム120と、第2記憶部103に記憶されたコンテンツデータを取り出して端末装置2へストリーミング配信するためのストリーム制御プログラム121と、チャンネル毎に第1階層の端末装置2aの所在情報(IPアドレスやポート番号など)の管理等を行なうためのトポロジー管理プログラム122と、ディスプレイ109を制御するための画面制御プログラム123と、エンコードされたコンテンツデータをデコードしたり、放送用コンテンツデータベース114のコンテンツデータをデコードするためのプレイヤプログラム124等を記憶しており、これらはCPU101によって読み出され、CPU101によってこれらのプログラムに従った機能が実行される。
また、第1記憶部102には、リングバッファ設定可能領域125が設けられている。このリングバッファ設定可能領域125には、各チャンネル毎のリングバッファ領域を設定することができる。ここで、チャンネルch1〜chnにそれぞれ対応するリングバッファ領域をリングバッファ領域125a〜125n(図示せず)とし、リングバッファ設定可能領域125には、配信されるチャンネルに対応するリングバッファ領域が設定される。
ここで、OSプログラム120は、CPU101によって読み出されて実行されることにより、キーボード105やマウス106入出力に関する機能や、第1記憶部102や第2記憶部103どのメモリ管理などのコンテンツ配信装置1であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム120がCPU101によって実行された状態で、上述のストリーム制御プログラム121と、トポロジー管理プログラム122と、画面制御プログラム123と、プレイヤプログラム124とが第1記憶部102から読み出されて実行される。
なお、OSプログラム120、ストリーム制御プログラム121、トポロジー管理プログラム122、画面制御プログラム123、プレイヤプログラム124等は、例えば、インターネット4に接続されたサーバ等から第1記憶部102にダウンロードされるようにしてもよく、又CD−ROM等の記録媒体に記録されてから当該記録媒体のドライブを介して、第1記憶部102に読み込まれるようにしてもよい。
(制御部113について)
制御部113は、上述のようにCPU101と第1記憶部102とから構成され、CPU101が第1記憶部102に記憶された各種プログラム120〜124を読み出して実行することにより、コンテンツ配信装置1全体を統括制御し、かつ、後述する配信手段、トポロジー管理手段、表示制御手段、再生手段等として機能するようになっている。なお、CPU101がストリーム制御プログラム121を実行することによって、配信手段等として、またCPU101がトポロジー管理プログラム122を実行することによって、トポロジー管理手段として、また、CPU101が画面制御プログラム123を実行することによって、表示制御手段等として、CPU101がプレイヤプログラム124を実行することによって、再生手段としてそれぞれ機能するようになっている。
(配信手段について)
配信手段は、キーボード105などの入力手段によって、チャンネル毎に指定されたコンテンツデータを放送用コンテンツデータベース114から取り出し、ネットワークインターフェイス104を介して、各チャンネルの第1階層の端末装置2a等にストリーミング配信する。
この配信手段による端末装置2a等へのストリーミング配信は、以下の手順で実行される。
配信手段は、各チャンネル毎に選択されたコンテンツ或いは予め設定されたコンテンツに対応するコンテンツデータを放送用コンテンツデータベース114から取り出す。
次に、配信手段は、放送用コンテンツデータベース114から取り出したコンテンツデータを、ストリーミング配信用のデータ形式、たとえばASF、WMA、WMV等のデータ形式にエンコードする。
その後、配信手段は、各チャンネルの第1階層の端末装置2a等に対して、それぞれ対応するコンテンツデータを所定容量毎に分割しながらコンテンツパケットに格納し、ネットワークインターフェイス104を介して、このコンテンツパケットへ送信する。
(トポロジー管理手段)
コンテンツ配信装置1は、異なるコンテンツを同時にストリーミング配信するために複数のチャンネルを有しており(コンテンツ配信装置1が複数存在して、各コンテンツ配信装置1に1つのチャンネルを割り振ってもよい)、トポロジー管理手段は、これらのチャンネル毎に構成されるツリー状階層構造の第1階層に参加している端末装置2の所在情報(IPアドレスやポート番号など)を管理している。また、トポロジー管理手段は、複数のチャンネルにそれぞれ対応する配信用IPアドレスを管理している。そして、上述の配信手段はトポロジー管理手段が管理する端末装置2のIPアドレスを宛先アドレスとし、配信用IPアドレスを送信元として端末装置2へコンテンツデータの配信を行なう。
第1実施形態においては、複数のチャンネルのIPアドレスを異ならせることとしたが、同一IPアドレスを用いてポート番号を異ならせることによって複数のチャンネルを構成するようにしてもよい。この場合、ポート番号毎にツリー状の配信構造を構成することになる。
(表示制御手段について)
表示制御手段は、ビデオチップ108及びディスプレイ109を制御して、コンテンツデータや各種情報を表示する機能を有している。すなわち、表示制御手段は、ディスプレイ109にどのようにコンテンツの映像や各種情報を表示するかを制御することができる。
(再生手段について)
再生手段は、放送用コンテンツデータベース114に記憶されているコンテンツデータをディスプレイ109に表示したり、スピーカ111から出力したりする機能を有している。
[3.端末装置2の構成等の説明]
次に、図10を参照して、端末装置2の構成及び動作について説明する。
図10は、第1実施形態における端末装置2の概略構成例を示す図である。端末装置2は、一般のパーソナルコンピュータあるいは専用端末を適用可能であり、図10に示すように、CPU(Central Processing Unit)201と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての第1記憶部202と、各種データ等を記憶するHDD(Hard Disc Drive)等から構成された第2記憶部203と、インターネット4を介してコンテンツ配信装置1や接続管理装置3との間で通信を行うネットワークインターフェイス204と、ユーザが端末装置2を遠隔操作するために所定の赤外線信号を送信及び受信するリモコン205と、このリモコン205と赤外線により通信を行なうための赤外線ポート206と、赤外線ポート206を制御する周辺機器制御チップ207と、CPU201からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述の内蔵ディスプレイ209に表示するビデオチップ208と、ビデオチップ208から送信される信号に応じた表示を行う内蔵ディスプレイ209と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ210と、音源チップ210から出力されるオーディオ信号を音波に変換する内蔵スピーカ211とを備えて構成され、これらの各種構成要素はシステムバス212を介して相互に接続されている。
なお、第1実施形態においては、CPU201と第1記憶部202とで制御部213を構成している。また、ネットワークインターフェイス204は、ルータ10bを介して、インターネット4に接続されている。
ここで、リモコン205は、コンテンツ配信システムSのチャンネルを選択するための選択手段としてチャンネル選択ボタン(図示せず)を有しており、端末装置2のユーザはこのチャンネル選択ボタンによって所望のチャンネルに接続することができる。
(第1記憶部202について)
また、第1記憶部202には、端末装置2のコンピュータとしての基本的な機能を提供するためのOSのプログラム220と、コンテンツ配信装置1から直接又は他の端末装置2に中継されてストリーミング配信されるコンテンツデータをストリーム受信及び下流の端末装置2へストリーミング送信するためのストリーム制御プログラム221と、接続された上流の装置(或いはコンテンツ配信装置1)の所在情報(IPアドレスやポート番号)とツリー接続された下流の端末装置2の所在情報の管理等を行なうためのトポロジー制御プログラム222と、ディスプレイ209を制御するための画面制御プログラム223と、上流の装置からストリーミング受信したコンテンツデータを再生するためのプレイヤ(再生)プログラム224と、複数のチャンネルとの接続を管理する接続プールプログラム225等を記憶しており、これらはCPU201によって読み出され、CPU201によってこれらのプログラムに従った機能が実行される。
また、第1記憶部202には、チャンネル毎に配信されるコンテンツデータを一時的に蓄積するリングバッファ領域を設定可能なリングバッファ設定可能領域226が設けられている。このリングバッファ設定可能領域226には、各チャンネル毎のリングバッファ領域を設定することができる。ここで、チャンネルch1〜chnにそれぞれ対応するリングバッファ領域をリングバッファ領域226a〜226nとし、リングバッファ設定可能領域226には、接続されるチャンネルに対応するリングバッファ領域が設定される。ここで、第1記憶部202は、不揮発性記憶装置と揮発性記憶装置とから構成され、リングバッファ設定可能領域226は不揮発性記憶装置とし、一方、各種プログラム220〜225が格納される領域は揮発性記憶装置としている。
ここで、OSプログラム220は、CPU201によって読み出されて実行されることにより、リモコン205の入出力に関する機能や、第1記憶部202や第2記憶部203などのメモリ管理などの端末装置2であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラムがCPU201によって実行された状態で、上述のストリーム制御プログラム221、トポロジー制御プログラム222、画面制御プログラム223、プレイヤプログラム224、接続プールプログラム225等が第1記憶部202から読み出されて実行される。
なお、OSプログラム220、ストリーム制御プログラム221、トポロジー制御プログラム222、画面制御プログラム223、プレイヤプログラム224、接続プールプログラム225等は、例えば、インターネット4に接続されたサーバ等から第1記憶部202にダウンロードされるようにしてもよく、又CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、第1記憶部202に読み込まれるようにしてもよい。
(制御部213について)
制御部213は、上述のようにCPU201と第1記憶部202とから構成され、CPU201が第1記憶部202に記憶された各種プログラム220〜225を読み出して実行することにより、端末装置2全体を統括制御し、かつ、後述する接続手段、トポロジー管理手段、ストリーミング受信手段、再生手段、表示制御手段、コンテンツデータ再生状況検出手段、リングバッファ設定手段、中継依頼受信手段、転送手段、バッファ容量通知手段、バックアップ処理手段、バッファ容量取得手段、比較手段、再接続手段等として機能するようになっている。
なお、CPU201がストリーム制御プログラム221を実行することによって、ストリーミング制御手段、転送手段等として、またCPU201がトポロジー管理プログラム122を実行することによって、接続手段、トポロジー管理手段、中継依頼受信手段等として、またCPU201が画面制御プログラム223を実行することによって表示制御手段等として、さらにCPU201がプレイヤプログラム224を実行することによって再生手段等として、さらにCPU201が接続プールプログラム225を実行することによって、コンテンツデータ再生状況検出手段、リングバッファ設定手段、バッファ容量通知手段、バックアップ処理手段、バッファ容量取得手段、比較手段、再接続手段等として、それぞれ機能するようになっている。
(接続手段について)
接続手段は、端末装置2をコンテンツ配信システムSへ参加させるために、チャンネル選択手段であるリモコン205のチャンネル選択ボタンのユーザによる操作によって選択されたチャンネルに関する接続先紹介要求を接続管理装置3へ送信し、その後、接続管理装置3から通知された接続先候補に接続する。
より具体的には、接続手段は、端末装置2をコンテンツ配信システムSへ参加させるために、接続管理装置3へ登録要求を送信して接続管理装置3へ登録すると共に、接続先紹介要求を送信して接続管理装置3へ接続先候補を要求する機能を有している。この登録要求や接続先紹介要求には、端末装置2のユーザがリモコン205のチャンネル選択ボタン等を操作することによって選択されるチャンネルを指定した情報及び自端末装置2の所在情報等を含む。
また、接続手段は、登録要求や接続先紹介要求を接続管理装置3へ送信する際に、その接続先紹介要求に関するチャンネルに対するリングバッファ領域のバッファ容量を送信するようにしている。たとえば、チャンネルch1の接続先紹介要求を行う場合には、リングバッファ領域226aのバッファ容量である。なお、このリングバッファ領域のバッファ容量は、登録要求や接続先紹介要求に含ませるようにしても、別個に送信するようにしてもよい。
さらに、接続手段は、自端末装置2があるチャンネルに接続している状態で、端末装置2のユーザがリモコン205等を操作することによってチャンネルの切替え操作を行ったときには、その切替え操作によって新たに接続すべきチャンネルを判定し、チャンネル切替え要求を含む接続先紹介要求を接続管理装置3へ送信する。
これにより端末装置2は一のチャンネルから新たなチャンネルへの接続の切替えを行うことができる。なお、リモコン205のチャンネル切替えボタンを設けずに、後述の表示制御手段を動作させてディスプレイ209にチャンネルの選択画面を表示させ、リモコン205操作によって選択させるようにしてもよい。
また、接続手段は、接続管理装置3へ送信した接続先紹介要求に対して、接続管理装置3から通知される接続先候補の情報、すなわち接続先候補の端末装置の所在情報であるIPアドレスやポート番号などの情報(以下、接続先候補の情報を含めて、「接続先候補」と略すことがある。)を受信する機能を有する。
さらに、接続手段は、受信した接続先候補の情報に基づいて、その接続先候補への接続を行う機能を有する。すなわち、接続手段は、接続先候補の情報に基づいて、接続先候補のIPアドレス及びポート番号等をあて先とした接続要求を行い、接続先候補との論理接続を行う。このように接続先候補と接続することによってチャンネルに参加、すなわち自端末装置2をツリー状階層構造の一部に組み込むことが可能となる。
(トポロジー管理手段について)
トポロジー管理手段は、現在接続している各チャンネルにおいて、接続手段によって接続したツリー状階層構造の上流の装置の所在情報などを第1記憶部202に記憶して管理すると共に、後述で詳説する転送手段によってコンテンツデータをツリー状階層構造の下流の端末装置2の所在情報などを第1記憶部202に記憶して管理する。
(ストリーミング受信手段)
ストリーミング受信手段は、階層構造における上流の端末装置2或いはコンテンツ配信装置1からストリーミング配信されるコンテンツパケットを受信し、そのコンテンツパケットに含まれるコンテンツデータを当該コンテンツデータのチャンネルに対応するリングバッファ領域に一時的に蓄積する。
(再生手段について)
再生手段は、ストリーミング受信手段によってストリーミング受信したコンテンツデータ、すなわちリングバッファ領域に格納したコンテンツデータを順次再生する機能を有している。
この再生手段は、音源チップ210やビデオチップ208を動作させることによってその機能を実現しており、リングバッファ領域に格納したコンテンツデータを順次取り出し、所定のコンテンツデータ形式(たとえば、Wave形式)に変換して音源チップ210やビデオチップ208へ入力し、コンテンツの再生を行う。
再生手段によって所定のコンテンツデータ形式に変換されたコンテンツデータは、そのコンテンツデータがオーディオ情報を含む場合には、そのオーディオ情報が音源チップ210によってオーディオ信号へ変換された後、内蔵スピーカ211から出力される。
また、再生手段によって所定のコンテンツデータ形式に変換されたコンテンツデータに映像情報が含まれるときには、後述の表示制御手段による制御によってこの映像情報がディスプレイ209に表示される。
また、再生手段は、リングバッファ領域に格納されたコンテンツデータに含まれる再生時刻情報に基づいて、当該コンテンツデータを再生するタイミングを決定する。すなわち、再生手段は、リングバッファ領域に格納されたコンテンツデータをその再生時刻で内蔵スピーカ211やディスプレイ209に出力するように構成されている。
この再生手段による再生は、チャンネル選択ボタン等によって最後に選択された最新のチャンネルに対応するリングバッファ領域からコンテンツデータを取り出して、ビデオチップ208や音源チップ210に出力することによって行われる。
(表示制御手段について)
表示制御手段は、ビデオチップ208及びディスプレイ209を制御して、コンテンツデータや各種情報を表示する機能を有している。すなわち、表示制御手段は、ディスプレイ209にどのようにコンテンツの映像や各種情報を表示するかを制御することができる。
(コンテンツデータ再生状況検出手段について)
コンテンツデータ再生状況検出手段は、再生手段によるチャンネル毎のコンテンツデータの再生状況を検出する機能を有している。
コンテンツデータの再生状況には、上述のように単位時間当りの再生回数や再生時間があるが、ここでは、チャンネル毎のコンテンツデータの再生回数を検出するものとして説明する。なお、コンテンツデータの再生回数とは、言い換えれば、チャンネルの選択回数である。
ところで、端末装置2のユーザによっては、チャンネルを極めて頻繁に切替えることがある。このような場合にコンテンツデータの再生回数をそのまま検出することが適切でないことが多い。そこで、コンテンツデータ再生状況検出手段は、すぐに切替えられたチャンネルは再生回数に含めないようにしている。すなわち、所定期間以上閲覧したものだけをその再生回数のカウントに含めるのである。
コンテンツデータ再生状況検出手段は、再生手段によるチャンネル毎のコンテンツデータの再生状況を検出すると、第1記憶部202に設けた再生状況履歴テーブルにその再生状況を登録及び更新をする。
ここで、再生状況履歴テーブルの例を図11に示す。この図の例では、チャンネルch1〜ch5までの各チャンネルの一日当りの再生回数が当日から30日前まで格納されている。なお、この例では、単位時間を1日とし、それを30個(30日)分前までとしているが、単位時間を1時間にしてもいし、1週間にしてもよい。また、曜日単位の再生状況履歴テーブルとするようにしてもよい。この場合、月曜日〜日曜日までのそれぞれについて各チャンネルの再生回数がこのテーブルに格納されることになる。
(リングバッファ設定手段について)
リングバッファ設定手段は、チャンネル選択ボタン等のチャンネル選択手段によって選択されるチャンネルごとのリングバッファ領域の領域を第1記憶部202のリングバッファ設定可能領域226に設定する機能を有している。そして、このように設定したリングバッファ領域の情報を接続プール情報として第1記憶部202の接続プール情報領域(以下、「接続プール」と呼ぶ。)に登録する。
リングバッファ領域のバッファ容量はリングバッファ設定手段よって決定されるものであり、リングバッファ領域に対応するチャンネルのコンテンツデータの再生状況に応じたバッファ容量とする。すなわち、リングバッファ設定手段は、コンテンツデータ再生状況検出手段により検出したチャンネルの再生状況に応じたバッファ容量を所定の演算式やテーブルを用いて算出し、そのチャンネルのリングバッファ領域に割り当てるのである。
ここで、コンテンツデータの再生状況とは、上述のように各チャンネルにおける単位時間当りのコンテンツデータの再生回数や再生時間などである。ここでは、リングバッファ領域設定手段が、各チャンネルの再生回数に重み付けを行う計算方法で算出したバッファ容量をそれぞれリングバッファ領域に割り当てるようものとして説明する。
以下では、接続プールのエントリ数が3つ、評価区間が3つの場合についての計算方法を例に挙げて説明する。ここで、「接続プールのエントリ数」とは、リングバッファ設定可能領域226に同時に設定することができるリングバッファ領域の数を意味する。
ここで、第1記憶部202に設定できるリングバッファ領域のメモリ容量をSfとし、以下の式(1)によって、SIとSrを定義する。
このようにSI及びSrを定義したときに、チャンネルiのリングバッファ領域のバッファ容量を以下の式(2)によって、再生状況に応じたバッファ容量として算出する。ここで、図12に示す各評価区間1〜3における選択確率Pch(i)_t1〜t3は、図11の再生状況履歴テーブルから導出している。重み付けWt1〜Wt3は、過去の評価区間ほど重み付けを小さくしていくように調整されたパラメータである。
なお、各パラメータは、以下の式(3),式(4)で定義される。
このように、リングバッファ設定手段は、新しい再生ほど重み付けを大きくする算出方法で各チャンネルに割り当てるリングバッファ領域のバッファ容量を算出しており、チャンネルの再生状況に応じて、リングバッファ領域のバッファ容量を効率的に配分することができる。
また、リングバッファ設定手段は、チャンネル選択手段によって選択されたチャンネルの接続先候補に接続手段よって接続したときに、第1記憶部202に当該選択されたチャンネルに対応するリングバッファ領域が第1記憶部202に存在せず、かつ第1記憶部202のリングバッファ設定可能領域226に設定したリングバッファ領域の数が所定数(上限値)に達していると判定すると、これら複数のリングバッファ領域のうち、一つのリングバッファ領域を第1記憶部202から削除すると共に、選択したチャンネルに対応するリングバッファ領域を第1記憶部202に設定する。
たとえば、リングバッファ設定手段は、第1記憶部202に設定されたリングバッファ領域のうち、再生手段によって再生されていない期間が最も長いリングバッファ領域を第1記憶部202から削除し、選択されたチャンネルに対応するリングバッファ領域を第1記憶部202に設定する。
(中継依頼受信手段)
中継依頼受信手段は、下流に接続される端末装置2からコンテンツデータの中継依頼を受信する。このコンテンツデータの中継依頼は、自端末装置2の下流の端末装置2からの接続要求と同時或いは別個に行われるものである。すなわち、自端末装置2の下流の端末装置2から接続要求がコンテンツデータの中継依頼を兼ねるようにしてもよく、自端末装置2との接続(セッション)を確立した後にコンテンツデータの中継依頼を受信する構成をとるようにしてもよい。ここでは、接続要求がこのコンテンツデータの中継依頼を兼ねるものとする。また、このコンテンツデータの中継依頼には、中継対象のコンテンツデータのチャンネルの指定情報が含まれており、中継依頼受信手段は、このチャンネルの指定情報により中継すべきチャンネルを判定する。
(転送手段)
転送手段は、リングバッファ領域に一時的に蓄積したコンテンツデータを取り出して、下流の端末装置2へストリーミング配信する。すなわち、転送手段は、ストリーミング受信手段によって受信しているコンテンツデータを、中継依頼を行った下流の端末装置へストリーミング形式で転送するのである。
ここで、転送手段は、中継依頼受信手段によって受信したチャンネルの指定情報に基づき、転送すべきチャンネルに対応するリングバッファ領域を判定する。そして、転送手段は、このように判定したリングバッファ領域からコンテンツデータを順次取り出して、下流の端末装置2へ転送するようにしている。
(バッファ容量通知手段)
バッファ容量通知手段は、自端末装置2のリングバッファ設定可能領域226に設定された各リングバッファ領域のバッファ容量を所定期間毎に接続管理装置3に通知する。ここで、この所定期間は、たとえば、1時間でもよく、1日でもよい。なお、この所定期間は、ユーザによるリモコン205等の操作により、変更可能に構成されている。
また、バッファ容量通知手段は、他の端末装置2から自端末装置2におけるリングバッファ領域のバッファ容量の問い合わせを受信した場合に、この問い合わせに対応するチャンネルのリングバッファ領域のバッファ容量を問い合わせ元の端末装置2へ通知する。
また、バッファ容量通知手段は、リングバッファ設定手段によってリングバッファ領域が設定されたときに、或いはリングバッファ設定手段によってリングバッファ領域のバッファ容量が更新されて変更されたときに、リングバッファ領域のバッファ容量を接続管理装置3に通知する。
(バックアップ処理手段)
バックアップ処理手段は、自端末装置2の電源が切断されたことを検出すると、第1記憶部202のリングバッファ設定可能領域226に設定されたリングバッファ領域のバッファ容量を不揮発性記憶装置である第2記憶部203に記憶し、自端末装置2の電源が再度供給されたことを検出すると、第2記憶部203に設定されたリングバッファ領域のバッファ容量に基づいて、リングバッファ領域を第1記憶部202に再設定する。
ここで、バックアップ処理手段による上記電源切断の検出や上記電源再供給の検出は、自端末装置2の電源回路(図示せず)の出力電圧を監視することによって行われる。すなわち、出力電圧が所定値よりも小さくなったとなったときに電源切断を検出し、その後出力電圧が所定値以上となったときに電源再供給の検出を行うのである。
(バッファ容量取得手段)
バッファ容量取得手段は、接続手段によって接続している各チャンネル階層構造における自端末装置2の上流にある端末装置2が有するリングバッファ領域のバッファ容量の情報を取得する上流バッファ容量取得手段として機能する。すなわち、バッファ容量取得手段は、上流バッファ容量取得手段として、接続管理装置3或いは自端末装置2の上流にある端末装置2にリングバッファ領域のバッファ容量の情報を要求し、その要求に応じて上流の端末装置2から送信されるリングバッファ領域のバッファ容量を取得する。
また、バッファ容量取得手段は、接続手段によって接続している各チャンネルの階層構造における自端末装置2の下流にある端末装置2が有するリングバッファ領域のバッファ容量の情報を取得する下流バッファ容量取得手段として機能する。すなわち、バッファ容量取得手段は、下流バッファ容量取得手段として、接続管理装置3或いは自端末装置2の下流にある端末装置2にリングバッファ領域のバッファ容量の情報を要求し、その要求に応じて下流の端末装置2から送信されるリングバッファ領域のバッファ容量を取得する。
(比較手段)
比較手段は、各チャンネル毎に、自端末装置2が有するリングバッファ領域のバッファ容量と、バッファ容量取得手段によって取得した上流の端末装置が有するリングバッファ領域のバッファ容量とを比較する。さらに、比較手段は、各チャンネル毎に、自端末装置2が有するリングバッファ領域のバッファ容量と、バッファ容量取得手段によって取得した下流の端末装置が有するリングバッファ領域のバッファ容量とを比較する。
また、比較手段は、下流に端末装置が複数ある場合には、それぞれの下流の端末装置2に関してバッファ容量の比較を行う。
(再接続手段)
再接続手段は、比較手段による比較の結果、自端末装置2が有するリングバッファ領域のバッファ容量が上流にある端末装置が有するリングバッファ領域のバッファ容量よりも大きい場合に、上流の端末装置よりも前記階層構造上における上流の端末装置2に再接続するように再接続処理を行う。
また、再接続手段は、比較手段による比較の結果、自端末装置2が有するリングバッファ領域のバッファ容量が下流にある端末装置が有するリングバッファ領域のバッファ容量よりも小さい場合に、下流の端末装置2或いは下流の端末装置2よりも階層構造上における下流の端末装置2に再接続するように再接続処理を行う。
なお、再接続手段は、比較手段による比較の結果、自端末装置2が有するリングバッファ領域のバッファ容量が上流にある端末装置2が有するリングバッファ領域のバッファ容量も大きく、かつ自端末装置2が有するリングバッファ領域のバッファ容量が下流にある端末装置2が有するリングバッファ領域のバッファ容量も小さいときには、上流の端末装置2よりも上流の端末装置2への再接続を優先して行う。
[4.接続管理装置3の構成等の説明]
次に、図13を参照して、接続管理装置3の構成及び動作について説明する。
図13は、第1実施形態における接続管理装置3の概略構成例を示す図である。接続管理装置3は、一般のサーバコンピュータを適用可能であり、図13に示すように、CPU(Central Processing Unit)301と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての第1記憶部302と、各種データ等を記憶するHDD(Hard Disc Drive)等から構成された第2記憶部303と、インターネット4を介してコンテンツ配信装置1や端末装置2との間で通信を行うネットワークインターフェイス304と、所定の情報を入力可能なキーボード305やマウス306等の入力手段を制御する周辺機器制御チップ307と、CPU301からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述のディスプレイ309に表示するビデオチップ308とを備えて構成され、これらの各種構成要素はシステムバス310を介して相互に接続されている。
なお、第1実施形態においては、CPU301と第1記憶部302とで制御部315を構成している。なお、ネットワークインターフェイス304は、ルータ10cを介して、インターネット4に接続されている。
(第1記憶部302について)
また、第1記憶部302には、接続管理装置3のコンピュータとしての基本的な機能を提供するためのOSプログラム320と、チャンネルに接続される複数の端末装置2の所在情報(IPアドレスやポート番号など)などを管理するための端末管理プログラム321と、各チャンネルのツリー状階層構造を構築及び管理等するためのトポロジー管理プログラム322と、端末装置2から送信される接続先紹介要求に対応するチャンネルの接続先候補を選択し、端末装置2へ接続先候補の情報を送信等するための接続先紹介プログラム323と、コンテンツ配信システムSの運用を管理等するための運用管理プログラム324等を記憶しており、これらはCPU301によって読み出され、CPU301によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム320は、CPU301によって読み出されて実行されることにより、キーボード305やマウス306の入出力に関する機能や、第1記憶部302や第2記憶部303などのメモリ管理などの接続管理装置3であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム320がCPU301によって実行された状態で、上述の端末管理プログラム321、トポロジー管理プログラム322、接続先紹介プログラム323、運用管理プログラム324等が実行される。
なお、OSプログラム320、端末管理プログラム321、トポロジー管理プログラム322、接続先紹介プログラム323、運用管理プログラム324等は、例えば、インターネット4に接続されたサーバ等から第1記憶部302にダウンロードされるようにしてもよく、又CD−ROM等の記憶媒体に記録されてから当該記憶媒体のドライブを介して、第1記憶部302に読み込まれるようにしてもよい。
(制御部315について)
制御部315は、上述のようにCPU301と第1記憶部302とから構成され、CPU301が第1記憶部302に記憶された各種プログラム320〜324を読み出して実行することにより、接続管理装置3全体を統括制御し、かつ、後述する接続先候補選択手段、通知手段、トポロジー管理手段、端末管理手段等として機能させ、さらに第1記憶部302を接続状態情報記憶手段として使用する。
なお、CPU301が端末管理プログラム321を実行することによって、端末管理手段等として、またCPU301がトポロジー管理プログラム322を実行することによってトポロジー管理手段等として、さらにCPU301が接続先紹介プログラム323を実行することによってバッファ容量受信手段、接続先候補選択手段、通知手段等として、それぞれ機能するようになっている。
(端末管理手段について)
端末管理手段は、端末装置2からの登録要求を受信すると、端末管理データベース314へこの端末装置2の所在情報であるIPアドレスなどをチャンネル毎に登録する。また、コンテンツ配信装置1からの登録要求を受信した場合も、このコンテンツ配信装置1の所在情報であるIPアドレスなどを各チャンネル毎に端末管理データベース314に登録する。なお、これらの端末装置2の所在情報は端末装置2からの登録要求に含まれ、この登録要求から所在情報を取得する。
(トポロジー管理手段について)
トポロジー管理手段は、コンテンツ配信装置1から送信される新規チャンネル生成要求に基づいて、新規チャンネルのツリー状階層構造を生成するための新規トポロジー生成手段と、端末装置2の接続先紹介要求や接続切断通知などのトポロジー変動通知によってチャンネルにおける端末装置2の接続情報を変更するトポロジー変更手段としての機能を有している。また、トポロジー管理手段は、チャンネル毎に階層構造を構成する端末装置2の接続状態情報を接続状態情報記憶手段としてのトポロジーデータベース313へ記憶する。
新規トポロジー生成手段は、コンテンツ配信装置1から新規チャンネル生成要求を受信すると、新規チャンネルのトポロジーテーブルを生成してトポロジーデータベース313へ登録する。ここで、トポロジーテーブルは、チャンネル毎に階層構造を構成する端末装置2の接続状態情報などを格納するためのテーブルであり、チャンネルごとに生成されてトポロジーデータベース313に登録される。
トポロジー変更手段は、トポロジーデータベース313に記憶される複数のトポロジーテーブルに端末装置2の情報を追加又は削除する機能を実行するものであり、端末装置2からの接続先紹介要求トポロジー参加報告に基づいて、トポロジーテーブルへの追加又は変更を行うものである。
ここで、トポロジーデータベース313におけるトポロジーテーブルについて、図14を参照して具体的に説明する。
トポロジーテーブルは、図14に示すように、各端末装置2の端末番号(たとえば、端末装置2のMACアドレスなど)を主項目として、それらの端末装置2毎の上流のノードにある端末装置、下流のノードにある端末装置、所在情報、リングバッファ領域のバッファ容量がそれぞれ関連付けられたテーブルであり、このトポロジーテーブルはチャンネル毎に設けられる。
ここで、端末装置2の端末番号、所在情報、リングバッファ領域のバッファ容量は、接続先紹介要求に含まれる情報に基づいて、トポロジーテーブルに登録される。
すなわち、トポロジー変更手段によって、各端末装置2から送信される各チャンネル毎のリングバッファ領域のバッファ容量、端末番号、所在情報が受信され、端末管理データベース314に登録される。
(バッファ容量受信手段について)
バッファ容量受信手段は、チャンネルに新規に参加しようとする端末装置2からリングバッファ領域のバッファ容量を含む接続先紹介要求を受信する。また、チャンネルに参加している端末装置2からリングバッファ領域のバッファ容量を定期的に受信する。
(接続先候補選択手段について)
接続先候補選択手段は、チャンネルに新規に参加、或いは再接続しようとする端末装置からリングバッファ領域のバッファ容量を含む接続先紹介要求を受信したとき、接続先紹介要求に対応するチャンネルの階層構造において、当該階層構造を構成する端末装置のリングバッファ領域のバッファ容量が階層構造の上流から下流にかけて小さくなるように、接続先紹介要求に対する接続先候補を、トポロジーデータベース313に記憶された接続状態情報から選択する。
すなわち、接続先候補選択手段は、接続先紹介要求をした端末装置2のリングバッファ領域のバッファ容量よりも大きいバッファ容量のリングバッファ領域を有する端末装置の下流で、かつ接続先紹介要求をした端末装置2のリングバッファ領域のバッファ容量よりも小さいバッファ容量のリングバッファ領域を有する端末装置の上流である端末装置2を接続先候補として選択する。
(通知手段について)
通知手段は、接続先候補選択手段によって選択された接続先候補を、接続先紹介要求を送信した端末装置2へ通知する機能を有する。この接続先候補の通知は、接続先候補の情報、すなわち接続先候補の端末装置2の通信プロトコル、IPアドレスやポート番号などの情報を含む。
[5.コンテンツ配信システムSの動作]
以下、端末装置2及び接続管理装置3の詳細動作について、フローチャートを用いて更に具体的に説明する。
(端末装置2の処理フローの説明)
まず、端末装置2の更に具体的な動作について、図15〜図17を参照して説明する。図15は端末装置2における処理全体を示すフローチャート、図16は端末装置2におけるチャンネル切替え処理を示すフローチャート、図17は端末装置2における接続変更処理を示すフローチャートである。
まず、図15を参照して、端末装置2における処理全体の概要を説明する。
まず、端末装置2の電源がONされると、端末装置2では各プログラム220〜225の初期化が行われ、各プログラム220〜225をCPU201による実行状態とし、制御部213としての機能を動作させる。このように制御部213が動作状態となると、接続管理装置3に対して自端末装置2の登録要求とともに接続紹介要求を行う(ステップS100)。すなわち、この制御部213は、端末装置2の所在情報(IPアドレスやポート番号など)、初期設定で予め決められたチャンネル(以下、「初期設定チャンネル」と呼ぶ。)及びこのチャンネルのリングバッファ領域のバッファ容量などの情報を接続管理装置3へ送信する。
接続管理装置3は、端末装置2から登録要求及び接続先紹介要求を受信すると、登録要求及び接続先紹介要求を行った端末装置2から受信した情報をトポロジーデータベース313と端末管理データベース314へ登録する。その後、接続管理装置3は、トポロジーデータベース313の情報に基づいて、初期設定チャンネルにおける接続先候補を選択して、接続先紹介要求を行った端末装置2に選択した接続先候補を通知する。
端末装置2の制御部213は、登録要求及び接続先紹介要求を接続管理装置3に送信した後、接続管理装置3から通知される接続先候補を受信すると、この接続先候補(端末装置2或いはコンテンツ配信装置1)との接続を確立する。端末装置2の制御部213は、このように接続を確立した接続先候補から初期設定チャンネルのコンテンツデータを受信するために、この初期設定チャンネル用のリングバッファ領域を第1記憶部202に設定する。
接続先候補から初期設定チャンネルのコンテンツパケットがストリーミング配信されると、端末装置2の制御部213は、このコンテンツパケットからコンテンツデータを取り出して、初期設定チャンネル用のリングバッファ領域に順次蓄積していく。
端末装置2の制御部213は、初期設定チャンネル用のリングバッファ領域に蓄積されたコンテンツデータに含まれる再生時刻情報をチェックし、再生時刻となったコンテンツデータをそのリングバッファ領域から取り出し、内蔵ディスプレイ209や内蔵スピーカ211を用いて再生を開始する。なお、初期設定チャンネルのコンテンツパケットの受信及び再生処理は、以下説明するステップS150,S151の処理としてもよい。
その後、端末装置2の制御部213は、チャンネルの切替え要求が行われたか否かを判定する(ステップS101)。すなわち、ユーザによるリモコン205に設けられたチャンネル選択ボタンの操作によって現在再生しているチャンネルと異なるチャンネルが選択されたか否かを判定するのである。
ステップS101において、チャンネル切替え要求が行われたと判定する(ステップS101:YES)と、制御部213は、ステップS110においてチャンネル切替え処理を行う。このステップS110におけるチャンネル切替え処理は後述で詳説する。
また、ステップS101において、チャンネル切替え要求が行われていないと判定すると(ステップS101:NO)、制御部213は、リングバッファ領域の更新契機になっているか否かを判定する(ステップS102)。
このリングバッファ領域の更新契機は、予め一定間隔の更新契機(たとえば、30分間隔)となるように第1記憶部202の更新契機記憶領域に設定されているが、ユーザによるリモコン205の操作によりこの更新契機記憶領域の設定された更新契機の情報を変更することができるような構成にしてもよい。制御部213は、この更新契機記憶領域を参照して、リングバッファ領域の更新契機となっているかを判定する。
なお、上述したように、再生状況によるバッファ容量の算出を日付単位の再生回数に基づいて行う場合、日付が変わることによって算出元となる再生回数が変わることを意味する。図11に示す例では、日付が変わると30日前のデータが29日前のデータに書き換わってしまうことになる。そのため、このように日付単位の再生回数による再生状況を検出する場合には、日付が変わったときをリングバッファ領域の更新契機とすることになる。
ステップS102において、リングバッファ領域の更新契機となっていると判定する(ステップS102:YES)と、制御部213は、プーリング中のリングバッファ領域に割り当てるバッファ容量を再生状況に応じて再計算し、その結果に応じたバッファ容量になるようにリングバッファ領域のバッファ容量を設定する(ステップS120)。
ここで、プーリング中のリングバッファ領域とは、接続を確立(接続をプール)しているチャンネルのうち非再生状態のチャンネル(以下、「待機中チャンネル」とする。)のリングバッファ領域(以下、「リングバッファ(3)」とする。)である。
その後、制御部213は、リングバッファ(3)のバッファ容量を接続管理装置3へ送信することによって接続管理装置3にリングバッファ(3)のバッファ容量を報告する(ステップS121)。
また、ステップS102において、リングバッファ領域の更新契機となっていないと判定する(ステップS102:NO)と、制御部213は、プーリング中のリングバッファ領域のバッファ容量の問い合わせ契機になっているか否かを判定する(ステップS103)。
このリングバッファ(3)のバッファ容量の問い合わせ契機は、予め一定間隔の問い合わせ契機(たとえば、30分間隔)となるように第1記憶部202の問い合わせ契機記憶領域に設定されているが、ユーザによるリモコン205の操作によりこの問い合わせ契機記憶領域の設定された問い合わせ契機の情報を変更することができるような構成にしてもよい。制御部213は、この問い合わせ契機記憶領域を参照して、リングバッファ領域のバッファ容量の問い合わせ契機となっているかを判定する。
ステップS103において、プーリング中のリングバッファ(3)のバッファ容量の問い合わせ契機になっていると判定すると(ステップS103:YES)、制御部213は、制御部213は、S130において接続変更処理を行う。このステップS130における接続変更処理は後述で詳説する。
ステップS103において、プーリング中のリングバッファ(3)のバッファ容量の問い合わせ契機となっていないと判定する(ステップS103:NO)と、制御部213は、自端末装置2のリングバッファ領域のバッファ容量の問い合わせが他の端末装置2からあったか否かを判定する(ステップS104)。
ステップS104において、リングバッファ領域のバッファ容量の問い合わせがあったと判定すると(ステップS104:YES)、制御部213は、問い合わせ要求にかかるチャンネルに関する自端末装置2のリングバッファ領域のバッファ容量を、その問い合わせを行った他の端末装置2に通知する(ステップS140)。
また、ステップS104において、リングバッファ領域のバッファ容量の問い合わせがないと判定すると(ステップS104:NO)、制御部213は、接続中のチャンネルの階層構造における上流の装置からコンテンツパケットを受信したか否かを判定する(ステップS105)。
なお、コンテンツパケットの受信は、上述で説明したように、受信したコンテンツパケットに対応するチャンネル用に用意したリングバッファ領域に順次蓄積することによって行われる。すなわち、自端末装置2が接続したチャンネル毎に設定されたリングバッファ領域にそれぞれ対応するコンテンツパケットを蓄積するのである。なお、リングバッファ領域に蓄積するのは、コンテンツパケットに含まれるコンテンツデータであり、コンテンツパケットのヘッダ部分を取り除いた情報である。
ステップS105において、上流の装置からコンテンツパケットを受信したと判定すると(ステップS105:YES)、制御部213は、受信したコンテンツパケットを下流の端末装置2へ転送する(ステップS150)。なお、受信したコンテンツパケットを転送する下流の端末装置2がない場合には、このS150の処理は行われない。
下流の装置への転送は、各チャンネル毎に行われるものであり、それぞれ対応するリングバッファ領域からコンテンツデータを取り出してコンテンツパケットとして送信することによって行われる。
また、制御部213は、リングバッファ領域から再生時刻に達したコンテンツデータをリングバッファ領域から取得して、再生する。なお、再生するコンテンツデータは、第1記憶部202のリングバッファ設定可能領域226に複数のリングバッファ領域が設定されている場合には、リモコン205等で再生選択されているチャンネルのコンテンツデータであり、複数のリングバッファ領域から再生選択されているチャンネルのリングバッファ領域から順次データが取り出されて再生される(ステップS151)。
ステップS110,S121,S130,S140,S151の処理が終了したとき、或いはステップS105において、上流の装置からコンテンツパケットを受信していないと判定(ステップS105:NO)したとき、制御部213は、自端末装置2の電源がOFFにされたか否かを判定する(ステップS160)。自端末装置2の電源がOFFにされていないと判定すると(S160:NO)、ステップS101からの処理を繰り返し、自端末装置2の電源がOFFされたと判定すると(S160:YES)、処理を終了する。
次に、S110におけるチャンネル切替え処理について図16を参照して具体的に説明する。
まず、制御部213は、再生中のチャンネルのリングバッファ領域(ここで、このリングバッファ領域を「リングバッファ(1)」とする。)のバッファ容量の状態を非再生状態、すなわち待機状態に変更する(ステップS200)。
次に、制御部213は、要求のあった切替え先のチャンネル(以下、「要求チャンネル」と呼ぶ。)に関する情報が接続プールに存在するか否かを判定する。すなわち、第1記憶部202の接続プール情報領域に要求チャンネルに関する情報があるか否かを判定する。言い換えれば、制御部213は、要求のあった要求チャンネルに対応するリングバッファ領域が第1記憶部202のリングバッファ設定可能領域226に存在するのか否かを判定するのである(ステップS201)。
ステップS201において、要求チャンネルに関する情報が接続プールに存在すると判定すると(ステップS201:YES)、制御部213は、要求チャンネル用のリングバッファ領域(以下、「リングバッファ(2)」とする。)のバッファ容量を再生状況に応じて計算し、その結果に基づいて、第1記憶部202に設定したリングバッファ(2)のバッファ容量を更新する(ステップS202)。
次に、制御部213は、要求チャンネルに関するリングバッファ(2)の選択時刻を更新する。すなわち、上述の再生状況履歴テーブルにリングバッファ(2)の選択時刻を登録して、再生状況履歴テーブルを更新する(ステップS203)。
ステップS201において、要求チャンネルに関する情報が接続プールに存在しないと判定すると(ステップS201:NO)、制御部213は、要求チャンネル用のリングバッファ(2)のバッファ容量を再生状況に応じて計算する(ステップS204)。すなわち、要求チャンネルに関するリングバッファ(2)を、そのバッファ容量が再生状況に応じて計算したバッファ容量となるように、リングバッファ(2)を第1記憶部202に設定する(ステップS205)。その後、制御部213は、リングバッファ(2)を接続プールへ登録する(ステップS205)。
次に、制御部213は、接続プールの登録数、すなわち第1記憶部202に設定されたリングバッファ領域の数が所定数の上限値に達しているか否かを判定する(ステップS206)。
ステップS206において、接続プールの登録数が上限値に達していると判定すると(ステップS206:YES)、制御部213は、接続プール内の最古の登録情報を削除する(ステップS207)。ここで、「接続プール内の最古の登録情報」には、接続プール内の登録情報のうちその登録が最も古い登録情報のほか、接続プール内の登録情報のうち再生されていない期間が最も長い登録情報や、接続プール内の登録情報のうち再生された時間が最も古い登録情報などがある。以下、「接続プール内の最古の登録情報」は、接続プール内の登録情報のうちその登録が最も古い登録情報であるとして説明する。なお、既に要求チャンネルに接続しているときには、この要求チャンネルに対応するリングバッファ領域が第1記憶部202に設定されているため、ステップS206,S207の処理は行われずに、ステップS208の処理に移行する。すなわち、要求チャンネルに対応するリングバッファ領域が存在しない場合に、ステップS206,S207の処理を行うのである。
ここで、ステップS207における登録情報の削除とは、削除する登録情報に対応するチャンネルの階層構造から脱退し、対応するリングバッファ領域を第1記憶部202から削除することをいう。すなわち、制御部213は、削除する登録情報に対応するチャンネルに関するコンテンツデータの受信を停止し、このチャンネルの階層構造から脱退し、さらに、このように脱退するチャンネルに対応するリングバッファ領域を第1記憶部202から削除するのである。
ステップS206において、接続プールの登録数が上限値に達していないと判定(ステップS206:NO)された場合、或いはステップS207の処理が終了した場合、制御部213は、切替え要求のあった要求チャンネルに接続するために、接続管理装置3に対して、接続先候補の通知を要求する。
また、制御部213は、要求チャンネルの情報を含む接続先紹介要求に加え、要求チャンネル用に設定するリングバッファ領域のバッファ容量を接続管理装置へ通知する。その後、制御部213は、接続管理装置3から通知される接続先候補を受信する(ステップS208)。
次に、制御部213は、ステップS208において接続管理装置3から受信した接続先候補である上流の装置に接続を要求する。その後、接続先候補との接続が確立する。これによって要求チャンネルの階層構造(トポロジー)に参加する(ステップS209)。
このように接続先候補との接続が確立すると、制御部213は、要求チャンネルの階層構造に参加した旨、すなわちトポロジー参加報告を接続管理装置3へ通知する(ステップS210)。このトポロジー参加報告には、自端末装置2の所在情報の他、要求チャンネル用として設定するリングバッファ(2)のバッファ容量が含まれる。
その後、制御部213は、要求チャンネルのリングバッファ(2)を再生可能な状態とする(ステップS211)。なお、既に要求チャンネルに接続しているときには、このリングバッファ(2)は第1記憶部202に設定されているため、このステップS208〜S211の処理は行われない。
その後、制御部213は、接続した接続先候補からコンテンツデータを受信し順次リングバッファ(2)に蓄積し、このように蓄積したコンテンツデータの再生時刻に応じて、コンテンツデータを順次再生する。
次に、制御部213は、再生状況履歴テーブルのリングバッファ(2)についてのチャンネルの選択回数を1だけインクリメントして、再生状況履歴テーブルを更新する(ステップS212)。このステップS212の処理が終了すると、S110のチャンネル切替え処理が終了する。
以上のように、チャンネル切替え処理では、切替え先チャンネルが接続プールで管理していないチャンネル(すなわち、接続状態でなく対応するリングバッファ領域がないチャンネル)であるとき、接続プールで管理しているチャンネルの登録数が所定数の上限値となっているとき、制御部213によって、接続プール内の最古の登録情報を削除されるため、リングバッファ設定可能領域226が無制限に拡大することがなく、しかも、接続しているチャンネルのうち、使用される可能性が低いチャンネルの接続を切断するため、リングバッファ領域を効率的に使用することができる。
次に、S130における接続変更処理について図17を参照して具体的に説明する。
まず、制御部213は、待機中チャンネルに関して、それぞれ自端末装置2の上流にある端末装置2が有するリングバッファ領域のバッファ容量の情報を取得する(ステップS300)。このバッファ容量の取得は、制御部213が上流にある端末装置2に問い合わせることによって、上流の端末装置2から通知してもらう形式をとる。
次に、制御部213は、待機中チャンネルのリングバッファ(3)のバッファ容量が上流の端末装置2のリングバッファ領域のバッファ容量よりも大きいか否かを判定する(ステップS301)。
ステップS301において、待機中チャンネルのリングバッファ(3)のバッファ容量が上流の端末装置2のリングバッファ領域のバッファ容量よりも大きいと判定すると(ステップS301:YES)、制御部213は、待機中チャンネルについての接続先紹介要求を接続管理装置3へ送信する。このとき、制御部213は、リングバッファ(3)のバッファ容量も合わせて接続管理装置3へ送信する(ステップS302)。
その後、制御部213は、接続管理装置3から受信した接続先候補である上流の装置に接続を要求する。その後、接続先候補との接続が確立する。これによってチャンネルの階層構造(トポロジー)に再参加する(ステップS303)。
このように接続先候補との接続が確立すると、制御部213は、要求チャンネルの階層構造に参加した旨、すなわちトポロジー参加報告を接続管理装置3へ通知する(ステップS304)。このトポロジー参加報告には、自端末装置2の所在情報の他、リングバッファ(3)のバッファ容量が含まれる。
ステップS304の処理が終了した後、或いはステップS301において、待機中チャンネルのリングバッファ(3)のバッファ容量が上流の端末装置2のリングバッファ領域のバッファ容量よりも大きくないと判定すると(ステップS301:NO)、次のステップS305の処理が行われる。
すなわち、制御部213は、接続している各チャンネルに関して、それぞれ自端末装置2の下流にある端末装置2が有するリングバッファ領域のバッファ容量の情報を取得する(ステップS305)。このバッファ容量の取得は、制御部213が下流にある端末装置2に問い合わせることによって、下流の端末装置2から通知してもらう形式をとる。
次に、制御部213は、待機中チャンネルのリングバッファ(3)のバッファ容量がこの待機中チャンネルにおける自端末装置2の下流の端末装置2のリングバッファ領域のバッファ容量よりも小さいか否かを判定する(ステップS306)。
そして、リングバッファ(3)のバッファ容量が下流の端末装置2のリングバッファ領域のバッファ容量よりも小さいと判定すると(ステップS306:YES)、制御部213は、この待機中チャンネルについての接続先紹介要求を接続管理装置3へ送信する。このとき、制御部213は、リングバッファ(3)のバッファ容量も合わせて接続管理装置3へ送信する(ステップS307)。
その後、接続管理装置3から通知される接続先候補を受信すると、制御部213は、ステップS307において接続管理装置3から受信した接続先候補である上流の装置に接続を要求する。その後、接続先候補との接続が確立する。これによって階層構造(トポロジー)に再参加する(ステップS308)。
このように接続先候補との接続が確立すると、制御部213は、要求チャンネルの階層構造に参加した旨、すなわちトポロジー参加報告を接続管理装置3へ通知する(ステップS309)。このトポロジー参加報告には、自端末装置2の所在情報の他、リングバッファ(3)のバッファ容量が含まれる。
ステップS309の処理が終了した後、或いは、ステップS306にて待機中チャンネルのリングバッファ(3)のバッファ容量が下流の端末装置2のリングバッファ領域のバッファ容量よりも小さくないと判定すると(ステップS306:NO)、この接続変更処理が終了する。
以上のように、接続変更処理では、待機中チャンネルのリングバッファ(3)のバッファ容量が、待機中チャンネルにおける上流の端末装置2のリングバッファ領域のバッファ容量よりも大きいときには、自端末装置2をさらに上流の端末装置2に再接続する。すなわち、階層構造の上流から下流にかけてその階層構造を構成する端末装置2のリングバッファ領域のバッファ容量が小さくなるように階層構造が動的に変更されることになる。
同様に、待機中チャンネルのリングバッファ(3)のバッファ容量が待機中チャンネルにおける下流の端末装置2のリングバッファ領域のバッファ容量よりも小さいときには、自端末装置2をさらに下流の端末装置2に再接続する。すなわち、階層構造の上流から下流にかけてその階層構造を構成する端末装置2のリングバッファ領域のバッファ容量が小さくなるように階層構造が動的に変更されることになる。
このように、第1実施形態では、階層構造の上流から下流にかけてその階層構造を構成する端末装置2のリングバッファ領域のバッファ容量が小さくなるように階層構造が動的に変更されることになり、各装置に設定されたリングバッファ領域の使用効率を向上させつつ、損失パケットの補完処理を適切に行うことができる。
なお、端末装置2において、リングバッファ領域の更新契機やリングバッファ容量問い合わせ契機をそれぞれ一つの契機として説明したがこれに限られるものではない。たとえば、各チャンネル毎にリングバッファ領域の更新契機やリングバッファ容量問い合わせ契機をもうけるようにしてもよく、このようにすれば、より使用環境に適したリングバッファ領域の更新等を行うことができる。
(接続管理装置3の処理フローの説明)
次に、接続管理装置3の更に具体的な動作について、図18を参照して説明する。図18は接続管理装置3における処理全体を示すフローチャートである。
接続管理装置3の電源がONになると、接続管理装置3は、各プログラム320〜324の初期化を行い、各プログラム320〜324をCPU301による実行状態とし、制御部315としての機能を動作させる(ステップS400)。
制御部315は、まず、端末装置2からチャンネルへの参加要求を受信したか否かを判定する(ステップS401)。
ステップS401において、端末装置2からチャンネルへの参加要求を受信したと判定すると(ステップS401:YES)、制御部315は、受信した参加要求に含まれる端末装置2の所在情報を端末管理データベース314へ登録する(ステップS405)。
一方、ステップS401において、端末装置2からチャンネルへの参加要求を受信していないと判定すると(ステップS401:NO)、制御部315は、コンテンツ配信装置1からの登録要求を受信したか否かを判定する(ステップS402)。
ステップS402において、コンテンツ配信装置1からの登録要求を受信したと判定すると(ステップS402:YES)、制御部315は、受信した登録要求に含まれるコンテンツ配信装置1の所在情報を端末管理データベース314へ登録する(ステップS406)。
次に、制御部315は、新しいチャンネルの情報をトポロジーデータベース313に登録する。すなわち、トポロジーデータベース313に新しいチャンネルのトポロジーテーブルを生成するのである(ステップS407)。
ステップS402において、コンテンツ配信装置1からの登録要求を受信していないと判定すると(ステップS402:NO)、制御部315は、端末装置2から接続先紹介要求を受信したか否かを判定する(ステップS403)。
ステップS403において、端末装置2から接続先紹介要求を受信したと判定すると(ステップS403:YES)、制御部315は、トポロジーデータベース313から接続先候補となる端末装置2を選択する(ステップS408)。
ここで、接続先候補の選択は次のように行われる。すなわち、制御部315は、端末装置2から送信される接続先紹介要求に含まれる接続先チャンネルの情報と、端末装置2がこの接続先チャンネル用として割り当てたリングバッファ領域のバッファ容量(以下、「通知バッファ容量」と呼ぶ。)の情報とを取り出す。そして、この接続先チャンネルのトポロジーテーブルをトポロジーデータベース313から取り出し、通知バッファ容量に基づいて、このトポロジーテーブルに登録している端末装置2のうち、接続先チャンネルにおける階層構造の上流から下流にかけて、その階層構造を構成する端末装置2のリングバッファ領域のバッファ容量が、次第に小さくなるような階層構造とするのに適した端末装置2を接続先候補として選択する。
接続管理装置3の制御部315は、このように選択した接続先候補を、接続先紹介要求を行った端末装置2へ返信して通知する(ステップS409)。
さらに、制御部315は、ステップS409において接続先候補を通知した端末装置2の所在情報と共に通知バッファ容量をトポロジーデータベース313に登録する(ステップS410)。
ステップS403において、端末装置2から接続先紹介要求を受信していないと判定すると(ステップS403:NO)、制御部315は、端末装置2からトポロジー参加報告があったか否かを判定する(ステップS404)。
ステップS404において、端末装置2からトポロジー参加報告があったと判定すると(ステップS404:YES)、制御部315は、このトポロジー参加報告に含まれる端末装置の所在情報と通知バッファ容量とを取り出し、トポロジーデータベース313の更新処理を行う(ステップS411)。すなわち、制御部315は、トポロジーの変動をトポロジーデータベース313へ登録する。
ステップS404において端末装置2からトポロジー参加報告がないと判定したとき(ステップS404:NO)、制御部315は、端末装置2からリングバッファ領域のバッファ容量の報告があったか否かを判定する(ステップS405)。
ステップS405において、端末装置2からリングバッファ領域のバッファ容量の報告があったと判定すると(ステップS405:YES)、制御部315は、リングバッファ領域のバッファ容量を報告した端末装置2に対応する情報として、トポロジーデータベース313に登録する(ステップS412)。すなわち、端末装置2からのリングバッファ容量通知に応じてトポロジーデータベース313のトポロジーテーブルを更新するのである。
ステップS405,S407,S410,S411,S412の処理が終了したとき、或いはステップS405において端末装置2からリングバッファ領域のバッファ容量の報告がないと判定したとき(ステップS405:NO)、制御部315は、接続管理装置3のサービス終了の操作が行われたか否かを判定する(ステップS413)。サービスの終了操作が行われていないと判定すると(S413:NO)、ステップS401からの処理を繰り返し、接続管理装置3のサービス終了の操作が行われたと判定すると(S413:YES)、処理を終了する。
(第2実施形態)
次に、本発明の第2実施形態について説明する。第2実施形態では、端末装置2における再接続動作を接続管理装置3に依存せずに行うものである。第2実施形態においては、第1実施形態と異なる部分のみ説明し、その他同様の部分については、説明を省略する。
第2実施形態の端末装置2は、再接続動作を接続管理装置3に依存せずに行うものであり、第1実施形態における接続変更処理動作のみ異なるため、この接続変更処理動作について、図19及び図20を参照して説明する。
図19に示すように、端末装置2は、所定のホップ数内となる近隣の他の端末装置2の情報を第1記憶部202における近隣端末情報記憶領域に記憶しており、この情報に基づいて、再接続処理を行うように構成している。
ここで、所定のホップ数は、たとえば、2ホップや3ホップである。また、ホップ数とは端末装置2の送信するパケットが受信されるまでに通過するルータの数を意味する。
また、他の端末装置2の情報には、所在情報が含まれており、これらの情報に基づいて、接続管理装置3に頼らずに再接続処理を行うようにしている。
以下、図20のフローチャートを用いて、第2実施形態における接続変更処理について具体的に説明する。
まず、制御部213は、待機中チャンネルに関して、それぞれ自端末装置2の上流にある端末装置2が有するリングバッファ領域のバッファ容量の情報を取得する(ステップS500)。このバッファ容量の取得は、制御部213が上流にある端末装置2に問い合わせることによって、上流の端末装置2から通知してもらう形式をとる。
まず、制御部213は、待機中チャンネルのリングバッファ(3)のバッファ容量が上流の端末装置2のリングバッファ領域のバッファ容量よりも大きいか否かを判定する(ステップS501)。
ステップS501において、待機中チャンネルのリングバッファ(3)のバッファ容量が上流の端末装置2のリングバッファ領域のバッファ容量よりも大きいと判定すると(ステップS501:YES)、制御部213は、近隣端末情報記憶領域に記憶した近隣の端末装置2の情報に基づいて、現在自端末装置2の上流装置となっている端末装置の上流装置(上流ノード)を選択する。すなわち、階層構造における自端末装置2の接続位置を一層上段に上げることができる端末装置を選択するのである。そして、このように選択した端末装置2に接続を要求してこの端末装置2との接続を確立する。これによって再生中チャンネルの階層構造(トポロジー)の参加位置を自律的に変更する(ステップS502)。
このように接続先候補との接続が確立すると、制御部213は、要求チャンネルの階層構造に参加した旨、すなわちトポロジー参加報告を接続管理装置3へ通知する(ステップS503)。このトポロジー参加報告には、自端末装置2の所在情報の他、リングバッファ(3)のバッファ容量が含まれる。
ステップS503の処理が終了した後、或いはステップS501において、待機中チャンネルのリングバッファ(3)のバッファ容量が上流の端末装置2のリングバッファのバッファ容量よりも大きくないと判定すると(ステップS501:NO)、次のステップS504の処理が行われる。
すなわち、制御部213は、接続している各チャンネルに関して、それぞれ自端末装置2の下流にある端末装置2が有するリングバッファ領域のバッファ容量の情報を取得する(ステップS504)。このバッファ容量の取得は、制御部213が下流にある端末装置2に問い合わせることによって、下流の端末装置2から通知してもらう形式をとる。
次に、制御部213は、ステップS505において、待機中チャンネルのリングバッファ(3)のバッファ容量がこの待機中チャンネルにおける自端末装置2の下流の端末装置2のリングバッファ領域のバッファ容量よりも小さいか否かを判定する。
そして、リングバッファ(3)のバッファ容量が下流の端末装置2のリングバッファ領域のバッファ容量よりも小さいと判定すると(ステップS505:YES)、制御部213は、近隣端末情報記憶領域に記憶した近隣の端末装置2の情報に基づいて、現在自端末装置2の下流装置となっている端末装置を選択する。すなわち、階層構造における自端末装置2の接続位置を一層下段に下げることができる端末装置を選択するのである。そして、このように選択した端末装置2に接続を要求してこの端末装置2との接続を確立する。これによって再生中チャンネルの階層構造(トポロジー)の参加位置を自律的に変更する(ステップS506)。
このように接続先候補との接続が確立すると、制御部213は、トポロジー参加報告を接続管理装置3へ通知する(ステップS507)。このトポロジー参加報告には、自端末装置2の所在情報の他、リングバッファ(3)のバッファ容量が含まれる。
ステップS507の処理が終了した後、或いは、ステップS505にて待機中チャンネルのリングバッファ(3)のバッファ容量が下流の端末装置2のリングバッファのバッファ容量よりも小さくないと判定すると(ステップS505:NO)、この接続変更処理が終了する。
以上のように、端末装置2は、各チャンネル毎に、階層構造の上流から下流にかけてその階層構造を構成する端末装置2のリングバッファのバッファ容量が小さくなるように階層構造を自律的に構築するようにしている。
以上、本発明の実施の形態のうちのいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記[発明の開示]の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。