(57)【要約】【課題】  多段中継型のストリーム配信において、受信している各ストリームデータの中継段数が異なる場合でも、受信したストリームデータの冗長性を確保できるようにする。【解決手段】  ストリームデータの最大中継段数および各受信装置での蓄積係数、各ストリームデータの中継段数に基づいて、各ストリームデータに対して、個別にバッファ長を設定する。また、各ストリームデータの中継段数が異なる場合は、中継段数が最も大きいストリームデータのバッファ長を基準とし、中継段数が少ないストリームデータのバッファ長を長くすることで、冗長性を確保する。【選択図】        図４
2006025338.tif 000002
【特許請求の範囲】
【請求項１】
複数台の上流装置からストリームデータを受信して再生するとともに、前記受信したストリームデータを下流装置に転送するストリーム受信装置のストリームデータ受信転送方法であって、
前記ストリームデータの最大中継段数および蓄積係数を取得するステップ１と、
前記各ストリームデータの中継段数を取得するステップ２と、
前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数に基づいて、前記各ストリームデータのバッファ長を前記ストリームデータ毎に算出するステップ３と、
前記ステップ３で算出した前記各ストリームデータのバッファ長にしたがい、前記各ストリームデータをバッファに蓄積するステップ４と、
前記バッファに蓄積したストリームデータを読み出して再生するステップ５と、
前記下流装置が存在する場合に、前記バッファに蓄積したストリームデータを読み出して前記下流装置に転送するステップ６とを有することを特徴とするストリームデータ受信転送方法。
【請求項２】
前記ステップ６は、前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数のうち最大の中継段数に基づいて、転送用パケット読み出し点を算出し、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出して前記下流装置に転送することを特徴とする請求項１に記載のストリームデータ受信転送方法。
【請求項３】
前記ステップ３は、前記ストリームデータを受信する上流装置が変更された場合、前記最大中継段数および前記蓄積係数、ならびに変更後のストリームデータの中継段数に基づいて新たなバッファ長を算出し、
前記ステップ６は、前記ストリームデータを受信する上流装置が変更された場合、変更前からストリームデータを転送している下流装置に対しては、変更前に算出した転送用パケット読み出し点からパケットを読み出して転送し、
前記上流装置が変更された後にストリームデータの転送を開始する下流装置に対しては、前記最大中継段数および蓄積係数、ならびに変更後の各ストリームデータの中継段数のうち最大の中継段数に基づいて、新たな転送用パケット読み出し点を算出して、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出して前記下流装置に転送することを特徴とする請求項１または請求項２に記載のストリームデータ受信転送方法。
【請求項４】
前記ストリームデータを受信する上流装置の変更を、任意のタイミングで行うことが可能な請求項３に記載のストリームデータ受信転送方法。
【請求項５】
前記ステップ１は、前記ストリームデータを受信する上流装置とは異なる、前記最大中継段数および蓄積係数を管理する管理装置から動的に取得することを特徴とする請求項１乃至請求項４のいずれか１項に記載のストリームデータ受信転送方法。
【請求項６】
複数台の上流装置からストリームデータを受信して再生するとともに、前記受信したストリームデータを下流装置に転送するストリームデータ受信装置であって、
前記ストリームデータの最大中継段数および蓄積係数を取得して保持する最大中継段数・蓄積係数保持手段と、
前記各ストリームデータの中継段数を取得して保持するバッファ別中継段数保持手段と、
前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数に基づいて、前記各ストリームデータのバッファ長を前記ストリームデータ毎に算出するバッファ長算出手段と、
前記バッファ長算出手段で算出した前記各ストリームデータのバッファ長にしたがい、前記各ストリームデータを蓄積するバッファと、
前記バッファに蓄積したストリームデータを読み出して再生するとともに、前記下流装置が存在する場合に、前記バッファに蓄積したストリームデータを読み出して前記下流装置に転送するバッファ読み出しとを備えることを特徴とするストリーム受信装置。
【請求項７】
前記バッファ読み出し手段は、前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数のうち最大の中継段数に基づいて、転送用パケット読み出し点を算出し、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出す転送パケット読出手段を備えることを特徴とする請求項６に記載のストリーム受信装置。
【請求項８】
前記バッファ長算出手段は、前記ストリームデータを受信する上流装置が変更された場合、前記最大中継段数および前記蓄積係数、ならびに変更後のストリームデータの中継段数に基づいて新たなバッファ長を算出し、
前記転送パケット読出手段は、前記ストリームデータを受信する上流装置が変更された場合、変更前からストリームデータを転送している下流装置に対しては、変更前に算出した転送用パケット読み出し点からパケットを読み出し、
前記上流装置が変更された後にストリームデータの転送を開始する下流装置に対しては、前記最大中継段数および蓄積係数、ならびに変更後の各ストリームデータの中継段数のうち最大の中継段数に基づいて、新たな転送用パケット読み出し点を算出して、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出すことを特徴とする請求項６または請求項７に記載のストリーム受信装置。
【請求項９】
前記最大中継段数・蓄積係数保持手段は、前記ストリームデータを受信する上流装置とは異なる、前記最大中継段数および蓄積係数を管理する管理装置から動的に取得する手段を備えることを特徴とする請求項６乃至請求項８のいずれか１項に記載のストリーム受信装置。
【請求項１０】
請求項１乃至請求項５のいずれかに記載のストリームデータ受信転送方法における各ステップの処理を、コンピュータに実行させるストリームデータ受信転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム受信装置およびストリーム受信転送方法、ならびにストリーム受信中継プログラムに関し、特に、多段中継型（ピア・トゥ・ピア型）の配信方式で配信されるストリームデータの受信装置に適用して有効な技術に関するものである。
【背景技術】
【０００２】
従来、音声や映像等のストリームデータをストリーム配信する配信方式は、クライアント・サーバ方式が一般的であった。前記クライアント・サーバ方式では、前記ストリームデータを受信して再生するストリーム受信装置は、１つのストリーム配信サーバに接続する。すなわち、前記クライアント・サーバ方式では、複数のストリーム受信装置が前記ストリームデータを保持している１つのストリーム配信サーバにアクセスし、データパケットを受信していた。しかしながら、１つのストリーム配信サーバの配信能力には限りがあるため、同時に多数のストリーム受信装置がアクセスすると輻輳状態になり、前記ストリーム受信装置で前記ストリームデータを再生するときに、スムーズに再生できなくなるという問題があった。このような問題を解決するには、たとえば、前記ストリーム配信サーバを増設する必要がある。しかしながら、前記ストリーム配信サーバを増設する場合、前記ストリーム受信装置の接続数が増大するに比例して前記ストリーム配信サーバ等の装置の設置コストや管理コストがかさむという問題があった。さらに、前記ストリーム受信装置が同時に接続した場合の輻輳を回避するためには、前記ストリーム配信サーバ群が接続するネットワークの回線帯域を増強する必要がある。そのため、前記装置の設置コストや管理コストに加え、回線コストがかさむという問題もあった。
【０００３】
前記クライアント・サーバ方式のストリーム配信において、前記ストリーム配信サーバの設置コストや管理コスト、回線コストがかさむという問題を回避する方式として、近年、多段中継型（ピア・トゥ・ピア型）のストリーム配信が提案され、利用されるようになってきた（たとえば、特許文献１を参照。）。
【０００４】
前記多段中継型のストリーム配信方式では、前記ストリーム受信装置に、受信した前記ストリームデータを他のストリーム配信装置に転送（中継）する手段を設ける。そのため、前記ストリームデータのストリーム配信を望む各ストリーム受信装置は、前記ストリーム配信サーバに限らず、前記ストリーム配信サーバから配信されたストリームデータを受信した他のストリーム受信装置から前記ストリームデータを受信することもできる。つまり、多段中継型のストリーム配信方法では、前記ストリーム配信サーバあるいは前記ストリーム配信サーバから配信されたストリームデータを受信したストリーム受信装置から送信されたストリームデータを受信したストリーム受信装置が、前記ストリームデータの中継装置となり、他のストリーム受信装置に対して前記ストリームデータを送信する。その結果、前記ストリーム配信サーバは、同時に送出するストリームデータのストリーム数を低減でき、ストリーム配信サーバ等の装置コストや管理コスト、前記ストリーム配信サーバ群が接続するネットワークの回線コストを低減できるようになった。
【０００５】
しかしながら、前記多段中継型のストリーム配信では、他のストリーム受信装置への中継装置となっているストリーム受信装置が停止または配信経路から離脱すると、前記中継装置（ストリーム受信装置）から送信された前記ストリームデータを受信している他のストリーム受信装置は前記ストリームデータを受信できなくなるという問題がある。このとき、前記第２ストリーム受信装置から送信されたストリームデータを受信している他のストリーム受信装置およびその先のストリーム受信装置も前記ストリームデータを受信できなくなる。
【０００６】
そこで、従来の多段中継型のストリーム配信方式では、このような問題の発生を回避するべく、データ受信している経路を冗長化し、いずれかの受信経路のうち少なくとも１つが接続状態を維持できれば、以降のストリーム受信装置はデータを連続的に受信することができる手段を持ち合わせることが可能となる（たとえば、特許文献１を参照）。ここで、受信状態が１のみになった場合、さらなる切断により受信状態の接続が０になる事態を回避すべく、受信状態の冗長性を回復させる手段、即ち新たに他のメディア配信サーバあるいは中継装置（ストリーム受信装置）との接続を図る手段を持ち合わせることも考えられる。
【特許文献１】特表２００２−５２２９５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の多段中継型のストリーム配信方法では、各ストリーム受信装置でバッファに蓄積する各ストリームデータのパケット数が中継段数によらず一定である。そのため、たとえば、図２３に示すように、２つの１段目の受信装置１５１，１５２からストリームデータを受信している２段目の受信装置１５３では、各受信装置１５１，１５２から受信したストリームデータ（バッファ）の冗長性を確保できる。しかしながら、たとえば、図２３に示したように、１段目の受信装置１５２およびストリーム配信サーバ４０２からストリームデータを受信している２段目の受信装置１５４では、受信した各ストリームデータ（バッファ）の冗長性を確保することができないという問題があった。
【０００８】
また、従来の多段中継型のストリーム配信では、ストリーム受信装置のバッファから、再生処理を開始するために読み出したパケットを、他のストリーム受信装置に転送（送信）している。つまり、従来の多段中継型のストリーム配信では、たとえば、図２３に示したように、１段目の受信装置１５１，１５２でシーケンス番号９番のパケットの再生および転送を開始するときに、前記１段目の受信装置１５１，１５２からストリームデータを受信している２段目の受信装置１５３では、シーケンス番号５番のパケットの再生および転送を開始している。そのため、各受信装置は、中継段数に応じて、同一時刻に再生されるパケットが異なるという問題があった。
【０００９】
また、従来の前記多段中継型のストリーム配信方法では、前記特許文献１に記載されたような方法で冗長化したとしても、前記中継装置となっている第１ストリーム受信装置が、受信状態の冗長性を回復させるために新たにストリームデータを受信するストリーム受信装置は、前記第１ストリーム受信装置より中継数、すなわち受信しているストリームデータが経由した中継装置（ストリーム受信装置）の数が少ないストリーム受信装置、あるいは前記ストリーム配信サーバに限られる。
【００１０】
前記ストリーム受信装置が冗長性を回復するために接続する他のストリーム受信装置が、中継数の少ない装置に限られる理由を例示により簡単に説明する。以下、すべてのストリーム受信装置は内部バッファにパケットを４個蓄積しているとする。また、前記ストリーム配信サーバに最初に接続するストリーム受信装置を１段目としたときに３段目に数えられるストリーム受信装置Ｐが、冗長性を失って１つのストリーム受信装置Ｘのみからストリームデータを受信している状態であるとする。また、前記ストリーム受信装置Ｐは、例えば、シーケンス番号１９，２０，２１，２２のパケットを保持していおり、次の動作として、再生用および次のストリーム受信装置への転送（中継）用に最先のシーケンス番号１９のパケットをまもなく読み出すところであるとする。また、前記ストリーム装置Ｘからは次のシーケンス番号２３のパケットをまもなく受信するところであるとする。
【００１１】
このとき、前記ストリーム受信装置Ｐが冗長性を回復させるために新たに接続し、ストリームデータを受信する他のストリーム受信装置としては、次の３種類が考えられる。１つめは中継段数が前記ストリーム受信装置Ｐよりも少ないストリーム受信装置Ｑ、２つめは中継段数が前記ストリーム受信装置Ｐと同じストリーム受信装置Ｒ、そして３つめは中継段数が前記ストリーム受信装置Ｐより多いストリーム受信装置Ｓである。しかしながら、従来の方式では、実質的に前記ストリーム受信装置Ｐの冗長性が確保できるのは前記ストリーム受信装置Ｑのみである。以下、その理由を説明する。
【００１２】
前記ストリーム受信装置Ｐが冗長性を回復するための接続先として前記ストリーム受信装置Ｒを選択したとする。前記ストリーム受信装置Ｒは、前記ストリーム受信装置Ｐと中継段数が同じであるため、たとえば、前記ストリーム受信装置Ｐが前記シーケンス番号１９のパケットを読み出すときに、前記ストリーム受信装置Ｒでもほぼ同じタイミングでシーケンス番号１９のパケットを読み出している。このとき、もし、前記ストリーム受信装置Ｒで読み出されたシーケンス番号１９のパケットが、前記ストリーム受信装置Ｐに到着した直後に前記ストリーム受信装置Ｐが前記シーケンス番号１９のパケットを読み出すならば、前記ストリーム受信装置Ｘから受信したシーケンス番号１９のパケットおよび前記ストリーム受信装置Ｒから受信したシーケンス番号１９のパケットが前記ストリーム受信装置Ｐに存在するので冗長性があるといえる。
【００１３】
しかしながら、前記ストリーム受信装置Ｒの処理負荷や転送遅延等により、前記ストリーム受信装置Ｐにおいて前記ストリーム受信装置Ｒからのパケットの受信が遅れることもある。この場合、前記ストリーム受信装置Ｐでシーケンス番号１９のパケットを読み出す瞬間に、前記ストリーム受信装置Ｒからのシーケンス番号１９のパケットがないということが起こる可能性がある。そのため、確実に冗長性が確保できているとはいえない。
【００１４】
また、前記ストリーム受信装置Ｐが冗長性を回復するための接続先として前記ストリーム受信装置Ｓを選択したとする。このとき、前記ストリーム受信装置Ｓの中継段数が、前記ストリーム受信装置Ｐの中継段数よりも１段多いとすると、たとえば、前記ストリーム受信装置Ｐが前記シーケンス番号１９のパケットを読み出すときに、前記ストリーム受信装置Ｓではほぼ４個前のシーケンス番号１５のパケットを読み出している。つまり、前記接続先として前記ストリーム受信装置Ｓを選択すると、前記ストリーム受信装置Ｐは、前記ストリーム受信装置Ｓから古いシーケンス番号、言い換えるとすでに再生したシーケンス番号のパケットを受信することになる。したがって、前記ストリーム受信装置Ｓからストリームデータを受信した場合、実質的に冗長性が確保されていない状態が継続する。
【００１５】
また、前記ストリーム受信装置Ｐが冗長性を回復するための接続先として前記ストリーム受信装置Ｑを選択したとする。このとき、前記ストリーム受信装置Ｑの中継段数が、前記ストリーム受信装置Ｐの中継段数よりも１段少ないとすると、たとえば、前記ストリーム受信装置Ｐがシーケンス番号１９のパケットを読み出すときに、前記ストリーム受信装置Ｑではシーケンス番号２３のパケットを読み出している。このとき前記ストリーム受信装置Ｑと前記ストリーム受信装置Ｘが同じ段であれば、前記ストリーム受信装置Ｘでもシーケンス番号２３のパケットを読み出している。また、前記ストリーム受信装置Ｑと前記ストリーム受信装置Ｘが異なる段であっても、前記ストリーム受信装置Ｐにおいてしばらく待ち合わせることで、前記ストリーム受信装置Ｑから受信したストリームデータと前記ストリーム受信装置Ｘから受信したストリームデータから、同じシーケンス番号を持つパケットを選択することができる。そのため、冗長性を確保することができる。
【００１６】
以上のように、中継段数が同じかあるいは多いストリーム受信装置からストリームデータを受信した場合、冗長性は確保できないので、冗長性を回復するために接続するストリーム受信装置は、前記ストリーム受信装置Ｑのように中継段数の少ない装置のみに限られる。そのため、たとえば、中継段数の少ない受信装置に、データ転送能力が低い受信装置が多い場合、冗長性を確保するために新たな接続先として選択できる受信装置がないという問題が生じる可能性があった。
【００１７】
本発明の目的は、多段中継型のストリーム配信において、あるストリーム受信装置が受信している各ストリームデータの中継段数が異なる場合でも、受信したストリームデータの冗長性を確保することが可能なストリーム受信転送方法およびストリーム受信装置を提供することにある。
【００１８】
本発明の他の目的は、多段中継型のストリーム配信において、中継段数によらず、すべてのストリーム受信装置で、同一のパケットをほぼ同時刻に再生することが可能なストリーム受信転送方法およびストリーム受信装置を提供することにある。
【００１９】
本発明の他の目的は、多段中継型のストリーム配信において、あるストリーム受信装置がストリームデータの冗長性を確保するために他のストリーム受信装置と接続するときに、中継段数が同じかまたは多いストリーム受信装置と接続しても、冗長性を確保することが可能なストリーム受信転送方法およびストリーム受信装置を提供することにある。
【００２０】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面によって明らかになるであろう。
【課題を解決するための手段】
【００２１】
本願において開示される発明の概略を説明すれば、以下の通りである。
【００２２】
（１）  複数台の上流装置からストリームデータを受信して再生するとともに、前記受信したストリームデータを下流装置に転送するストリーム受信装置のストリームデータ受信転送方法であって、前記ストリームデータの最大中継段数および蓄積係数を取得するステップ１と、前記各ストリームデータの中継段数を取得するステップ２と、前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数に基づいて、前記各ストリームデータのバッファ長を前記ストリームデータ毎に算出するステップ３と、前記ステップ３で算出した前記各ストリームデータのバッファ長にしたがい、前記各ストリームデータをバッファに蓄積するステップ４と、前記バッファに蓄積したストリームデータを読み出して再生するステップ５と、前記下流装置が存在する場合に、前記バッファに蓄積したストリームデータを読み出して前記下流装置に転送するステップ６とを有するストリームデータ受信転送方法である。
【００２３】
（２）  複数台の上流装置からストリームデータを受信して再生するとともに、前記受信したストリームデータを下流装置に転送するストリームデータ受信装置であって、前記ストリームデータの最大中継段数および蓄積係数を取得して保持する最大中継段数・蓄積係数保持手段と、前記各ストリームデータの中継段数を取得して保持するバッファ別中継段数保持手段と、前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数に基づいて、前記各ストリームデータのバッファ長を前記ストリームデータ毎に算出するバッファ長算出手段と、前記バッファ長算出手段で算出した前記各ストリームデータのバッファ長にしたがい、前記各ストリームデータを蓄積するバッファと、前記バッファに蓄積したストリームデータを読み出して再生するとともに、前記下流装置が存在する場合に、前記バッファに蓄積したストリームデータを読み出して前記下流装置に転送するバッファ読み出しとを備えるストリーム受信装置である。
【発明の効果】
【００２４】
本発明のストリームデータ受信転送方法は、前記（１）の手段のように、複数の上流装置から受信しているストリームデータをバッファに蓄積するときに、ストリームデータ毎にバッファ長を設定して蓄積する。そのため、受信している複数のストリームデータの受信段数が異なる場合、たとえば、中継段数が最も大きいストリームデータを基準とし、中継段数が小さいストリームデータのバッファ長を長く（大きく）することで、中継段数が異なるストリームデータ（バッファ）の冗長性を確保することができる。
【００２５】
また、前記（１）の手段の前記ステップ６において、前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数のうち最大の中継段数に基づいて、転送用パケット読み出し点を算出し、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出して前記下流装置に転送するようにすれば、前記ストリーム受信装置で再生を開始するストリームデータのパケットと、前記下流装置で再生を開始するストリームデータのパケットを一致させることができる。そのため、中継段数によらず、すべてのストリーム受信装置で、前記ストリームデータの同一パケットをほぼ同時刻に再生することができる。
【００２６】
またこのとき、前記ステップ３は、前記ストリームデータを受信する上流装置が変更された場合、前記最大中継段数および前記蓄積係数、ならびに変更後のストリームデータの中継段数に基づいて新たなバッファ長を算出し、前記ステップ６は、前記ストリームデータを受信する上流装置が変更された場合、変更前からストリームデータを転送している下流装置に対しては、変更前に算出した転送用パケット読み出し点からパケットを読み出して転送し、前記上流装置が変更された後にストリームデータの転送を開始する下流装置に対しては、前記最大中継段数および蓄積係数、ならびに変更後の各ストリームデータの中継段数のうち最大の中継段数に基づいて、新たな転送用パケット読み出し点を算出して、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出して前記下流装置に転送するようにするのが好ましい。このようにすると、たとえば、ストリームデータを受信していた上流装置が停止あるいは配信経路から離脱し、ストリームデータを受信できなくなったときに、ストリームデータの冗長性を確保するための新たな上流装置として、前記ストリーム受信装置と中継段数が同じか、または大きい装置を選択しても、前記ストリームデータの冗長性を確保することができる。
【００２７】
またこのとき、前記ストリームデータを受信する上流装置の変更は、任意のタイミングで行うことが可能であることが好ましい。
【００２８】
また、前記ステップ１は、前記ストリームデータを受信する上流装置とは異なる、前記最大中継段数および蓄積係数を管理する管理装置から動的に取得してもよい。このようにすれば、前記バッファに蓄積する各ストリームデータのバッファ長や、前記転送パケット読み出し点を動的に変更することができる。そのため、たとえば、前記ストリームデータの配信中に最大中継段数を増やし、前記ストリームデータを受信することが可能なストリーム受信装置の数を増やすことができる。
【００２９】
また、前記（１）の手段のようなストリームデータ受信転送方法を実現するストリーム受信装置は、たとえば、前記（２）の手段のような構成にすればよい。
【００３０】
このとき、前記バッファ読み出し手段が、前記最大中継段数および蓄積係数、ならびに前記各ストリームデータの中継段数のうち最大の中継段数に基づいて、転送用パケット読み出し点を算出し、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出す転送パケット読出手段を備えていれば、中継段数によらず、すべてのストリーム受信装置で、前記ストリームデータの同一パケットをほぼ同時刻に再生することができる。
【００３１】
またこのとき、前記バッファ長算出手段は、前記ストリームデータを受信する上流装置が変更された場合、前記最大中継段数および前記蓄積係数、ならびに変更後のストリームデータの中継段数に基づいて新たなバッファ長を算出し、前記転送パケット読出手段は、前記ストリームデータを受信する上流装置が変更された場合、変更前からストリームデータを転送している下流装置に対しては、変更前に算出した転送用パケット読み出し点からパケットを読み出し、前記上流装置が変更された後にストリームデータの転送を開始する下流装置に対しては、前記最大中継段数および蓄積係数、ならびに変更後の各ストリームデータの中継段数のうち最大の中継段数に基づいて、新たな転送用パケット読み出し点を算出して、前記バッファに蓄積されている前記算出した転送用パケット読み出し点のパケットを読み出すようにすれば、たとえば、ストリームデータを受信していた上流装置が停止あるいは配信経路から離脱し、ストリームデータを受信できなくなったときに、ストリームデータの冗長性を確保するための新たな上流装置として、前記ストリーム受信装置と中継段数が同じか、または大きい装置を選択しても、前記ストリームデータの冗長性を確保することができる。
【００３２】
また、前記最大中継段数・蓄積係数保持手段が、前記ストリームデータを受信する上流装置とは異なる、前記最大中継段数および蓄積係数を管理する管理装置から動的に取得する手段を備えていれば、たとえば、前記ストリームデータの配信中に最大中継段数を増やし、前記ストリームデータを受信することが可能なストリーム受信装置の数を増やすことができる。
【００３３】
また、前記（１）の手段のようなストリームデータ受信転送方法は、たとえば、前記（２）の手段のようなストリーム受信装置に限らず、たとえば、コンピュータと、前記各ステップの処理をコンピュータに実行させるストリームデータ受信転送プログラムによっても実現することができる。
【００３４】
以下、本発明について、図面を参照して実施の形態（実施例）とともに詳細に説明する。
なお、実施例を説明するための全図において、同一機能を有するものは、同一符号を付け、その繰り返しの説明は省略する。
【発明を実施するための最良の形態】
【００３５】
本発明のストリーム受信転送方法では、複数の上流装置からストリームデータを受信するときに、各ストリームデータのバッファ長を各上流装置の中継段数に応じて設定することで、中継段数が異なる上流装置から受信したストリームデータのバッファ間の冗長性を確保する。また、前記上流装置から受信したストリームデータを他のストリーム受信装置（下流装置）に転送するときに、前記ストリームデータの最大中継段数、および受信した各ストリームデータの中継段数、ならびにバッファ（パケット）の蓄積係数（最低バッファ長）から、前記下流装置に転送するパケットの読み出し点を設定することで、前記ストリームデータを受信しているすべての装置で、前記ストリームデータの同一シーケンス（パケット）を同時刻に再生することを可能にする。またこのとき、前記各上流装置の中継段数のうち、もっとも中継段数が大きい上流装置から受信しているストリームデータのバッファに対して前記下流装置に転送するパケットの読み出し点を設定することで、バッファの冗長性を確保するための新たな上流装置として、中継段数が同じまたは大きい受信装置を選択することを可能にする。
【実施例１】
【００３６】
図１は、本発明による実施例１のストリーム受信装置の概略構成を示す模式図である。
図１において、１はストリーム受信装置、２は上流装置、３は下流装置である。
【００３７】
本実施例１のストリーム受信装置１は、たとえば、図１に示すように、Ｍ台（Ｍは２以上の整数）の上流装置２からストリームデータを受信して再生するとともに、受信したストリームデータを他のストリーム受信装置（下流装置）３に転送することが可能な受信装置である。このとき、前記上流装置２は、前記ストリームデータを配信しているストリーム配信サーバであってもよいし、前記ストリーム配信サーバから配信されたストリームデータを受信している他のストリーム受信装置であってもよい。また、図１では前記下流装置３を１台しか示していないが、２台以上であってもよい。
【００３８】
このとき、前記ストリーム受信装置１は、図１に示すように、受信した各ストリームデータを上流装置２毎にわけて蓄積するFIFO(First-In First-Out)バッファ１Ａ（以下、単にバッファという）と、前記バッファ１Ａに蓄積しているストリームデータの中から再生あるいは前記下流装置３に転送するストリームデータを選択して読み出すバッファ読み出し手段と、前記ストリームデータの最大中継段数および前記バッファ１Ａで蓄積する各ストリームデータの最小バッファ長（蓄積係数）を保持する最大中継段数・蓄積係数保持手段１Ｃと、前記各上流装置２から受信しているストリームデータの中継段数を保持するバッファ別中継段数保持手段１Ｄと、前記最大中継段数、および前記蓄積係数、ならびに前記バッファ別の中継段数に基づいて、前記バッファ１Ａに蓄積する前記各ストリームデータのバッファ長を個別に算出するバッファ長算出手段１Ｅとを備える。また、前記ストリーム受信装置１は、前記各手段に加え、図１に示したように、前記上流装置２から転送（送信）されたストリームデータの受信、および前記下流装置３へのストリームデータの送信等を行うパケット送受信手段１Ｆと、前記バッファ読み出し手段１Ｂで読み出したストリームデータの再生処理を行う再生処理手段１Ｇとを備える。また、図示は省略するが、前記各手段の動作やデータの受け渡しは、処理制御手段により制御されているとする。
【００３９】
また、前記各ストリームデータの中継段数は、前記各ストリームデータが前記ストリーム配信サーバから配信された後、前記ストリーム受信装置１に到達するまでに経由した他のストリーム受信装置の数とする。そして、前記ストリーム受信装置１は、前記下流装置３からストリームデータの転送（中継）を要求されると、前記バッファ別中継段数保持手段１Ｄに保持されている各ストリームデータの中継段数に基づいて、前記下流装置３に転送（送信）するストリームデータの中継段数を通知する。このとき、前記ストリーム受信装置１では、複数の上流装置２からストリームデータを受信しているので、各ストリームデータの中継段数が異なる場合がある。そこで、前記ストリーム受信装置１は、受信しているストリームデータの中継段数がすべて同じである場合、その中継段数に１を足した段数を、前記ストリーム受信装置１から転送（送信）するストリームデータの中継段数とする。一方、受信しているストリームデータの中継段数が異なる場合は、最も大きい中継段数に１を足した段数を前記ストリーム受信装置１から転送（送信）するストリームデータの中継段数とする。以下、前記ストリームデータの中継段数に１を足した段数を、受信装置の中継段数という。
【００４０】
また、前記最大中継段数は、前記受信装置の中継段数の上限であり、前記受信装置の中継段数が前記最大中継段数と一致するストリーム受信装置は、他のストリーム受信装置にストリームデータを転送（送信）することができない。
【００４１】
また、前記蓄積係数は、前記ストリーム受信装置１で各上流装置２からストリームデータのパケットを受信し、バッファ１Ａに蓄積するときに、前記バッファ１Ａに蓄積しておくべきパケットの数の下限である。このとき、前記蓄積係数を１として前記バッファ１Ａに１個のパケットのみを蓄積していても構わないが、その場合、たとえば、前記上流装置２の負荷の増大による次のパケットの送信の遅れや、ネットワークの輻較による到着遅延が発生すると、前記バッファ読み出し手段１Ｂがバッファ１Ａからパケットを読み出すタイミングにパケットがない状態となる。そのため、前記再生処理手段１Ｇにストリームデータのパケットを送信できなくなり、映像音声のシーン飛びや乱れが生ずる。そのため、前記ストリームデータ受信装置１では、前記蓄積係数を２以上として前記バッファ１Ａに２個以上のパケットを蓄積しておくことが好ましい。
【００４２】
図２乃至図５は、本実施例１のストリーム受信装置の動作を説明するための模式図であり、図２は各上流装置とのデータの受け渡しの概要を説明する図、図３は本実施例１のストリーム受信装置の接続例を示す図、図４は図３の１段目および２段目の受信装置のバッファの状態の一例を示す図、図５は図３の３段目の受信装置のバッファの状態の一例を示す図である。
【００４３】
以下、図１に示したようなストリーム受信装置１の動作、言い換えるとストリームデータの受信転送方法について、２台の上流装置２からストリームデータを受信する場合を例に挙げて説明する。
【００４４】
本実施例１のストリーム受信装置１は、たとえば、図２に示すように、第１上流装置(#1)２０１および第２上流装置(#2)２０２からストリームデータを受信する場合、まず、前記第１上流装置２０１および第２上流装置２０２に対してストリームデータの転送（中継）を要求する。このとき、前記第１上流装置２０１からは、たとえば、前記ストリームデータの最大中継段数、および蓄積係数、ならびに前記第１上流装置２０１から転送（送信）されるストリームデータの中継段数が送信される。そして、前記ストリーム受信装置１は、前記最大中継段数、および蓄積係数、ならびに前記ストリームデータの中継段数を受信すると、前記最大中継段数および蓄積係数を前記最大中継段数・蓄積係数保持手段１Ｃに保持し、前記第１上流装置２０１の中継段数をバッファ別中継段数保持手段１Ｄに保持する。同様に、前記第２上流装置２０２からは、たとえば、前記第２上流装置２０２から転送（送信）されるストリームデータの中継段数が送信される。そして、前記ストリーム受信装置１は、前記ストリームデータの中継段数を受信すると、バッファ別中継段数保持手段１Ｄに保持する。
【００４５】
前記ストリーム受信装置１は、前記最大中継段数、および蓄積係数、ならびに各ストリームデータの中継段数を保持したら、次に、前記バッファ長算出手段１Ｅにおいて、前記第１上流装置２０１から受信するストリームデータのバッファ長と、前記第２上流装置２０２から受信するストリームデータのバッファ長を個別に算出する。前記算出した各ストリームデータのバッファ長は、前記バッファ１Ａに渡される。そして、前記第１上流装置２０１から受信したストリームデータおよび前記第２上流装置２０２から受信したストリームデータは、前記バッファ長算出手段１Ｅで個別に算出したバッファ長に相当する数だけのパケットを蓄積しながら、前記ストリームデータの再生や前記下流装置への転送を行う。
【００４６】
前記バッファ長算出手段１Ｅにおいて、前記各ストリームデータのバッファ長を算出するときには、前記各ストリームデータの中継段数、および前記最大中継段数、ならびに前記蓄積係数を参照する。以下、前記各ストリームデータのバッファ長の算出方法の一例を説明する。
【００４７】
すべてのストリームデータの中継段数が同じ場合、各ストリームデータのバッファ長は、たとえば、下記数式１から算出する。
〔数１〕
（最大中継段数−バッファ別中継段数）×バッファ蓄積係数
【００４８】
また、ストリームデータの中継段数が異なる場合、中継段数が最も大きいストリームデータのバッファ長は、前記数式１から算出する。
【００４９】
また、ストリームデータの中継段数が異なる場合、中継段数が最も大きいストリームデータ以外の残りのストリームデータのバッファ長は、たとえば、以下のような要領でバッファ長を設定する。
【００５０】
まず、バッファ長を求めるストリームデータの中継段数と、前記最も大きい中継段数の間の中継段数を求める。そして、求めた中継段数を用いて前記数式１から算出したバッファ長を、前記中継段数が最も大きいストリームデータのバッファ長に加える。つまり、前記バッファ長を求めるストリームデータの中継段数が１で、前記最も大きい中継段数が３だとすると、バッファ別中継段数を２として前記数式１から算出したバッファ長を、バッファ別中継段数を３として算出したバッファ長に加えればよい。また、前記バッファ長を求めるストリームデータの中継段数が１で、前記最も大きい中継段数が４だとすると、バッファ別中継段数を２として前記数式１から算出したバッファ長、およびバッファ別中継段数を３として算出したバッファ長を、バッファ別中継段数を４として算出したバッファ長に加えればよい。
【００５１】
次に、複数台のストリーム受信装置１が、図３に示すように接続され、ストリームデータを受信している場合を例に挙げ、前記各ストリームデータのバッファ長を個別に設定することの効果を説明する。このとき、前記最大中継段数は３、前記蓄積係数は２に設定されているとする。またこのとき、前記各ストリーム受信装置１は、受信したストリームデータ（バッファ）の冗長性を確保するために、２つの上流装置からストリームデータを受信しているとする。また、以下の説明では、図３に示したように、２つの上流装置がストリーム配信サーバ４０１，４０２であるストリーム受信装置１０１，１０２を１段目の受信装置という。また、２つの上流装置の一方あるいは両方が前記１段目の受信装置１０１，１０２であるストリーム受信装置１０３，１０４は２段目の受信装置という。また、２つの上流装置の一方あるいは両方が前記２段目の受信装置１０３，１０４であるストリーム受信装置１０５，１０６，１０７は３段目の受信装置という。
【００５２】
前記１段目の受信装置１０１，１０２はそれぞれ、２つのストリーム配信サーバ４０１，４０２からストリームデータを直接受信している。そのため、前記各ストリームデータのバッファ長は前記数式１から６となる。その結果、前記１段目の受信装置１０１，１０２は、図４に示すように各ストリームデータの６個のパケットをバッファに蓄積する。またこのとき、図４に示すように、前記各ストリーム配信サーバ４０１，４０２がシーケンス番号１３番のパケットを送信する時点で、前記各１段目の受信装置１０１，１０２は、シーケンス番号７番から１２番までのパケットをバッファに蓄積している。そしてこのとき、前記各１段目の受信装置１０１，１０２では、先頭のパケット、すなわちシーケンス番号７番のパケットを読み出して再生するとともに、２段目以降の受信装置に転送（送信）する。
【００５３】
また、前記２段目の受信装置１０３，１０４のうち、前記２つの上流装置がともに前記１段目の受信装置である受信装置１０３は、各ストリームデータのバッファ長が前記数式１から４となる。その結果、前記受信装置１０３は、図４に示すように各ストリームデータの４個のパケットをバッファに蓄積する。またこのとき、図４に示すように、前記各１段目の受信装置１０１，１０２がシーケンス番号７番のパケットを送信する時点で、前記２段目の受信装置１０３は、シーケンス番号３番から６番までのパケットをバッファに蓄積している。そしてこのとき、前記２段目の受信装置１０３では、先頭のパケット、すなわちシーケンス番号３番のパケットを読み出して再生するとともに、３段目の受信装置に転送（送信）する。
【００５４】
一方、前記２段目の受信装置１０３，１０４のうち、一方の上流装置のみが前記１段目の受信装置１０２である受信装置１０４では、中継段数が最も大きい前記１段目の受信装置１０２から受信するストリームデータのバッファ長については前記数式１から４となる。その結果、前記１段目の受信装置１０２から受信したストリームデータについては、図４に示すように、４個のパケットをバッファに蓄積する。また、前記ストリーム配信サーバ４０２から直接受信するストリームデータのバッファ長については、前述のように、前記１段目の受信装置１０２から受信するストリームデータのバッファ長（４）に、前記数式１を用いて算出した１段目の受信装置１０２のバッファ長を（６）を加えた１０とする。その結果、前記ストリーム配信サーバ４０２から直接するストリームデータについては、図４に示すように、１０個のパケットをバッファに蓄積する。またこのとき、図４に示すように、前記１段目の受信装置１０２がシーケンス番号７番のパケットを送信する時点で、前記１段目の受信装置１０２から受信したストリームデータのバッファには、シーケンス番号３番から６番までの４個のパケットが蓄積されている。一方、前記１段目の受信装置１０２がシーケンス番号７番のパケットを送信する時点では、前記ストリーム配信サーバ４０２はシーケンス番号１３番のパケットを送信するところである。そのため、前記２段目の受信装置１０４における、前記ストリーム配信サーバ４０２から受信したストリームデータのバッファには、シーケンス番号３番から１２番までの１０個のパケットが蓄積されている。つまり、本実施例１のストリーム受信装置では、ストリームデータを受信する複数の上流装置の中継段数が異なる場合でも、前記各ストリームデータのバッファの先頭（読み出し点）のパケットのシーケンス番号が一致する。そのため、前記複数の上流装置として中継段数が同じ装置を選択できない場合でも、前記ストリームデータ（バッファ）の冗長性を確保することができる。
【００５５】
また、詳細な説明は省略するが、前記３段目の受信装置１０５，１０６，１０７のうち、前記２つの上流装置が前記２段目の受信装置１０３，１０４である受信装置１０５は、受信する各ストリームデータのバッファ長が前記数式１から２となる。そのため、図５に示すように、各ストリームデータとも、２個のパケットをバッファに蓄積する。
【００５６】
また、前記３段目の受信装置１０５，１０６，１０７のうち、一方の上流装置が２段目の受信装置１０３で他方の上流装置が１段目の受信装置１０１である受信装置１０６では、前記２段目の受信装置１０３から受信するストリームデータのバッファ長は前記数式１から２となる。一方、前記１段目の受信装置１０１から受信するストリームデータのバッファ長は、前述のように、前記２段目の受信装置１０３から受信する場合のバッファ長（２）に、前記２段目の受信装置１０３でのバッファ長（４）を足した６となる。その結果、前記３段目の受信装置１０６では、図５に示すように、前記２段目の受信装置１０３から受信したストリームデータは２個のパケットをバッファに蓄積し、前記１段目の受信装置１０１から受信したストリームデータは６個のパケットをバッファに蓄積する。また、図５に示すように、前記２段目の受信装置１０３が先頭のパケット、すなわちシーケンス番号３番のパケットを読み出して送信しようとしている時点で、前記３段目の受信装置１０６の前記２段目の受信装置１０３から受信したストリームデータのバッファには、シーケンス番号１番と２番のパケットが蓄積されている。また、前記２段目の受信装置１０３が先頭のパケット、すなわちシーケンス番号３番のパケットを読み出して送信しようとしている時点では、前記１段目の受信装置１０１は、シーケンス番号７番のパケットを読み出して送信しようとしているところなので、前記３段目の受信装置１０６の前記１段目の受信装置１０１から受信したストリームデータのバッファには、図５に示すように、シーケンス番号１番から６番までのパケットが蓄積されている。そのため、前記３段目の受信装置１０６における各ストリームデータのバッファの先頭のパケット、すなわち前記３段目の受信装置１０６で読み出すパケットのシーケンス番号が一致し、ストリームデータ（バッファ）の冗長性を確保することができる。
【００５７】
また、前記３段目の受信装置１０５，１０６，１０７のうち、一方の上流装置が２段目の受信装置１０４で他方の上流装置がストリーム配信サーバ４０２である受信装置１０７では、前記２段目の受信装置１０４から受信するストリームデータのバッファ長は前記数式１から２となる。一方、前記ストリーム配信サーバ４０２から受信するストリームデータのバッファ長は、前述のように、前記２段目の受信装置１０４から受信する場合のバッファ長（２）に、前記２段目の受信装置１０４でのバッファ長（４）と前記１段目の受信装置１０２でのバッファ長（６）を足した１２となる。その結果、前記３段目の受信装置１０７では、図５に示すように、前記２段目の受信装置１０４から受信したストリームデータは２個のパケットをバッファに蓄積し、前記ストリーム配信サーバ４０２から受信したストリームデータは１２個のパケットをバッファに蓄積する。また、図５に示すように、前記２段目の受信装置１０４が先頭のパケット、すなわちシーケンス番号３番のパケットを読み出して送信しようとしている時点で、前記３段目の受信装置１０７の前記２段目の受信装置１０４から受信したストリームデータのバッファには、シーケンス番号１番と２番のパケットが蓄積されている。また、前記２段目の受信装置１０４が先頭のパケット、すなわちシーケンス番号３番のパケットを読み出して送信しようとしている時点では、前記ストリーム配信サーバ４０２は、シーケンス番号１３番のパケットを読み出して送信しようとしているところなので、前記３段目の受信装置１０７の前記ストリーム配信サーバ４０２から受信したストリームデータのバッファには、図５に示すように、シーケンス番号１番から１２番までのパケットが蓄積されている。そのため、前記３段目の受信装置１０７における各ストリームデータのバッファの先頭のパケット、すなわち前記３段目の受信装置１０７で読み出すパケットのシーケンス番号が一致し、ストリームデータ（バッファ）の冗長性を確保することができる。
【００５８】
以上説明したように、本実施例１のストリーム受信装置を用いたストリームデータの受信転送方法によれば、複数の上流装置からストリームデータを受信するときに、上流装置毎に受信したストリームデータのバッファ長を設定するので、複数の上流装置の中継段数が異なる場合でも、受信したストリームデータ（バッファ）の冗長性を確保することができる。
【実施例２】
【００５９】
図６は、本発明による実施例２のストリーム受信装置の概略構成を示す模式図である。
【００６０】
本実施例２のストリーム受信装置１の基本的な構成は、前記実施例１で説明したストリーム受信装置１と同様の構成であり、図６に示すように、受信した各ストリームデータを上流装置２毎にわけて蓄積するFIFO(First-In First-Out)バッファ１Ａ（以下、単にバッファという）と、前記バッファ１Ａに蓄積しているストリームデータの中から再生あるいは前記下流装置に転送するストリームデータを選択して読み出すバッファ読み出し手段１Ｂと、前記ストリームデータの最大中継段数および前記バッファ１Ａで蓄積するストリームデータの最小バッファ長（蓄積係数）を保持する最大中継段数・蓄積係数保持手段１Ｃと、前記各上流装置２から受信しているストリームデータの中継段数を保持するバッファ別中継段数保持手段１Ｄと、前記最大中継段数、および前記蓄積係数、ならびに前記バッファ別の中継段数に基づいて、前記バッファ１Ａに蓄積する前記各ストリームデータのバッファ長を個別に算出するバッファ長算出手段１Ｅとを備える。また、前記ストリーム受信装置１は、前記各手段に加え、図１に示したように、前記上流装置２から転送（送信）されたストリームデータの受信、および前記下流装置３へのストリームデータの送信等を行うパケット送受信手段１Ｆと、前記バッファ読み出し手段１Ｂで読み出したストリームデータの再生処理を行う再生処理手段１Ｇとを備える。また、図示は省略するが、前記各手段の動作やデータの受け渡しは、処理制御手段により制御されているとする。
【００６１】
ただし、本実施例２のストリーム受信装置１では、図６に示すように、前記バッファ読み出し手段１Ｂに、前記ストリーム受信装置で再生するパケットを選択して読み出す再生パケット読出手段１Ｈと、前記下流装置３に転送（送信）するパケットを選択して読み出す転送パケット読出手段１Ｊが設けられている。このとき、前記転送パケット読出手段１Ｊは、前記バッファ別中継段数保持手段１Ｄで保持する各ストリームデータの中継段数と、前記最大中継段数・蓄積係数保持手段１Ｃで保持する最大中継段数および蓄積係数とを用い、前記再生パケット読出手段１Ｈが選択して読み出す点とは別の読み出し点を設定して読み出す。
【００６２】
また、前記ストリームデータの中継段数、および前記最大中継段数、ならびに前記蓄積係数については、前記実施例１で説明したとおりなので、詳細な説明は省略する。
【００６３】
図７乃至図１２は、本実施例２のストリーム受信装置の動作を説明するための模式図であり、図７はストリームデータの転送原理を説明する図、図８は本実施例２のストリーム受信装置の接続例を示す図、図９は１段目の受信装置のストリームデータの転送手順を説明する図、図１０は２段目の受信装置のストリームデータの転送手順を説明する図、図１１は３段目の受信装置へのストリームデータの転送手順を説明する図、図１２は４段目の受信装置へのストリームデータの転送手順を説明する図である。
【００６４】
本実施例２のストリーム受信装置は、たとえば、図７に示すように、Ｍ個（Ｍは２以上の整数）の上流装置２からストリームデータを受信している。このとき、ｍ番目（ｍ＝１，２，…，Ｍ）の上流装置２から受信したストリームデータ用に用意するバッファのバッファ長をｊmとすると、図７に示したように、たとえば、シーケンス番号１番からｊm番までのパケットを蓄積するバッファが用意される。このとき、前記各ストリームデータのバッファ長ｊmは、たとえば、前記数式１から算出する。なお、前記実施例１では、中継段数が異なるストリームデータを受信している場合、中継段数が最も大きいストリームデータのバッファ長に関しては数式１で算出し、残りのストリームデータのバッファ長は前記数式１から算出したバッファ長にいくつかのバッファ長を加えたが、本実施例２では、中継段数に関係なく、すべてのストリームデータのバッファ長を、前記数式１から算出する。
【００６５】
このとき、前記再生用の読み出し点は、従来のようにバッファの先頭のパケットとする。
【００６６】
一方、前記転送用の読み出し点は、たとえば、図７に示したように、前記バッファの先頭ではなく、数パケット分先のパケットとする。このとき、前記転送用の読み出し点は、たとえば、下記数式２から算出する。
〔数２〕
（最大中継段数−max{各バッファの中継段数}−１）×バッファ蓄積係数
ここで、前記max{各バッファの中継段数}は、前記受信している各ストリームデータの中継段数の最大値をとることを意味する。
【００６７】
以下、ストリーム受信装置１の具体的な接続例を挙げ、各ストリーム受信装置のバッファの状態および転送用読み出し点の設定方法について説明する。なお、本実施例２では、最大中継段数を５、蓄積係数を２とし、複数のストリーム受信装置１が、図８に示したように接続され、ストリームデータの受信、中継を行っているとする。
【００６８】
このとき、前記ストリーム配信サーバ４０１，４０２から直接ストリームデータを受信している１段目の受信装置１１１，１１２，１１３は、各ストリームデータの中継段数が０段である。そのため、前記各ストリームデータのバッファ長は前記数式１から１０となり、１０個のパケットをバッファ１Ａに蓄積する。
【００６９】
またこのとき、前記１段目の受信装置１１１のバッファ１Ａで、たとえば、図９に示すように、シーケンス番号１０番から１９番までのパケットを蓄積しているとすれば、前記再生パケット読出手段１Ｈは先頭のパケット、すなわちシーケンス番号１０番のパケットを選択して読み出す。またこのとき、図示は省略するが他の１段目の受信装置１１２，１１３のバッファ１Ａもシーケンス番号１０番から１９番までのパケットを蓄積しており、前記再生パケット読出手段１Ｈはシーケンス番号１０番のパケットを読み出している。
【００７０】
また、前記１段目の受信装置１１１の、２段目の受信装置へ転送（送信）するパケットを読み出す転送パケット読出手段１Ｊは、前記数式２を用いて転送用パケット読み出し点を設定する。このとき、前記各ストリームデータの中継段数は０段なので、前記数式２の計算結果は８となる。そのため、前記転送パケット読出手段１Ｊは、前記再生パケット読出手段１Ｈの再生用パケット読み出し点よりも８パケット分先を、転送用パケット読み出し点に設定する。そして、前記転送用パケット読み出し点に読み出すべきシーケンス番号を持つパケットが存在すれば、それを読み出し、２段目の受信装置に転送（送信）する。このとき、前記１段目の受信装置１１１のバッファ１Ａで、たとえば、図９に示したように、シーケンス番号１０番から１９番までのパケットを蓄積しているとすれば、前記再生パケット読出手段１Ｈがシーケンス番号１０番のパケットを読み出すときに、前記転送パケット読出手段１Ｊは、８パケット分先のシーケンス番号１８番のパケットを読み出し、前記２段目の受信装置１１４，１１５へ送信する。またこのとき、図示は省略するが他の１段目の受信装置１１２，１１３のバッファ１Ａもシーケンス番号１０番から１９番までのパケットを蓄積しており、前記転送パケット読出手段１Ｊはシーケンス番号１８番のパケットを読み出し、下流装置に転送している。
【００７１】
また、図８に示した接続例では、前記２段目の受信装置１１４，１１５は、２つの上流装置が１段目の受信装置１１１，１１２である。そのため、受信している各ストリームデータの中継段数はともに１であり、前記数式１からバッファ長は８となる。またこのとき、図９に示すように、前記１段目の受信装置１１１，１１２において、シーケンス番号１０番のパケットの再生を開始し、シーケンス番号１８番のパケットを転送（送信）するところであれば、前記２段目の受信装置１１４，１１５の各バッファ１Ａには、シーケンス番号１０番から１７番までのパケットが蓄積されている。そのため、前記２段目の受信装置１１４，１１５は、前記１段目の受信装置と同じタイミングでシーケンス番号１０番のパケットの再生を開始することができる。
【００７２】
また、前記２段目の受信装置１１４，１１５は、受信している各ストリームデータの中継段数がともに１であるため、前記数式２の計算結果は６となる。そのため、前記転送パケット読出手段１Ｊは、前記再生パケット読出手段１Ｈの再生用パケット読み出し点よりも６パケット分先を、転送用パケット読出点に設定する。そして、前記転送用パケット読み出し点に取り出すべきシーケンス番号を持つパケットが存在すれば、それを読み出し、下流装置に転送（送信）する。このとき、前記２段目の受信装置１１４で、たとえば、図９に示したように、シーケンス番号１０番から１７番までのパケットを蓄積しているとすれば、前記再生パケット読出手段１Ｈがシーケンス番号１０番のパケットを選択して読み出すときに、前記転送パケット読出手段１Ｊは、６パケット分先のシーケンス番号１６番のパケットを読み出し、下流装置へ送信する。またこのとき、図示は省略するが他の２段目の受信装置１１５のバッファ１Ａもシーケンス番号１０番から１７番までのパケットを蓄積しており、前記転送パケット読出手段１Ｊはシーケンス番号１６番のパケットを読み出し、下流装置に転送している。
【００７３】
前記３段目の受信装置１１６，１１７，１１８のうち、２つの上流装置が２段目の受信装置１１４，１１５である受信装置１１６，１１７ついては、受信しているストリームデータの中継段数がともに２であり、前記数式１からバッファ長は６となる。そのため、前記２段目の受信装置１１４，１１５が、図１０に示すように、シーケンス番号１０番から１７番までのパケットをバッファに蓄積しており、前述のようにシーケンス番号１６番のパケットを転送するところであれば、前記３段目の受信装置１１６のバッファ１Ａには、シーケンス番号１０番から１５番までのパケットが蓄積されている。そのため、前記３段目の受信装置１１６は、前記２段目の受信装置１１４，１１５と同じタイミングでシーケンス番号１０番のパケットの再生を開始することができる。またこのとき、図示は省略するが他の３段目の受信装置１１７のバッファ１Ａもシーケンス番号１０番から１５番までのパケットを蓄積しており、前記再生パケット読出手段１Ｈはシーケンス番号１０番のパケットを読み出し、再生を開始している。
【００７４】
また、前記３段目の受信装置１１６，１１７は、受信している各ストリームデータの中継段数がともに２であるため、前記数式２の計算結果は４となる。そのため、前記転送パケット読出手段１Ｊは、前記再生パケット読出手段１Ｈの再生用パケット読み出し点よりも４パケット分先を、転送用パケット読み出し点に設定する。そして、前記転送用パケット読み出し点に取り出すべきシーケンス番号を持つパケットが存在すれば、それを読み出し、下流装置に転送（送信）する。このとき、前記３段目の受信装置１１６で、たとえば、図１０に示したように、シーケンス番号が１０番から１５番までのパケットを蓄積しているとすれば、前記再生パケット読出手段１Ｈがシーケンス番号１０番のパケットを選択して読み出すときに、前記転送パケット読出手段１Ｊは、４パケット分先のシーケンス番号１４番のパケットを読み出し、下流装置へ送信する。またこのとき、図示は省略するが他の３段目の受信装置１１７のバッファ１Ａもシーケンス番号１０番から１５番までのパケットを蓄積しており、前記転送パケット読出手段１Ｊはシーケンス番号１４番のパケットを読み出し、下流装置に転送している。
【００７５】
一方、前記３段目の受信装置１１６，１１７，１１８のうち、一方の上流装置が２段目の受信装置１１５であり、他方の上流装置が１段目の受信装置１１３である受信装置１１８については、受信しているストリームデータの中継段数が２および１である。そのため、前記２段目の受信装置１１５から受信しているストリームデータのバッファ長は前記数式１から６となり、前記１段目の受信装置１１３から受信しているストリームデータのバッファ長は前記数式１から８となる。そのため、前記２段目の受信装置１１５が、図１１に示すように、シーケンス番号１０番から１７番までのパケットをバッファ１Ａに蓄積しており、前述のようにシーケンス番号１６番のパケットを転送するところであれば、前記３段目の受信装置１１７のバッファ１Ａには、シーケンス番号１０番から１５番までのパケットが蓄積されている。また、前記２段目の受信装置１１５が、シーケンス番号１０番から１７番までのパケットをバッファ１Ａに蓄積しており、前述のようにシーケンス番号１６番のパケットを転送するところであれば、前記１段目の受信装置１１３は、図９に示した１段目の受信装置１１１と同様に、シーケンス番号１０番から１９番までのパケットをバッファ１Ａに蓄積しており、シーケンス番号１８番のパケットを転送（送信）するところである。そのため、前記３段目の受信装置１１７の、前記１段目の受信装置１１３から受信するストリームデータのバッファには、図１１に示したように、シーケンス番号１０番から１７番までのパケットが蓄積されている。そのため、前記３段目の受信装置１１７は、中継段数が異なる２つのストリームデータを受信していながら、ストリームデータ（バッファ）の冗長性を確保することができる。またこのとき、前記３段目の受信装置１１７は、前記２段目の受信装置１１５や１段目の上流装置１１３と同じタイミングでシーケンス番号１０番のパケットの再生を開始することができる。
【００７６】
また、前記３段目の受信装置１１７は、受信している各ストリームデータの中継段数が２および１であるため、前記数式２の計算結果は４となる。そのため、前記転送パケット読出手段１Ｊは、前記再生パケット読出手段１Ｈの再生用パケット読み出し点よりも４パケット分先を、転送用パケット読み出し点に設定する。そして、前記転送用パケット読み出し点に取り出すべきシーケンス番号を持つパケットが存在すれば、それを読み出し、下流装置に転送（送信）する。図１１に示した例では、前記３段目の受信装置１１７において、前記２段目の受信装置１１５から受信しているストリームデータのバッファはシーケンス番号１０番から１５番までのパケットが蓄積されており、前記１段目の受信装置１１３から受信しているストリームデータのバッファはシーケンス番号１０番から１７番までのパケットが蓄積されている。そのため、前記３段目の受信装置１１７において前記再生パケット読出手段１Ｈがシーケンス番号１０番のパケットを選択して読み出すときに、前記転送パケット読出手段１Ｊは、４パケット分先のシーケンス番号１４番のパケットを読み出し、下流装置へ送信する。
【００７７】
また、前記４段目の受信装置１１９，１２０は、２つの上流装置が３段目の受信装置１１６，１１７である。そのため、受信している各ストリームデータの中継段数はともに３であり、前記数式１からバッファ長は４となる。またこのとき、図１０に示したように、前記３段目の受信装置１１６，１１７において、シーケンス番号１０番のパケットの再生を開始し、シーケンス番号１４番のパケットを転送（送信）するところであれば、前記４段目の受信装置１１９，１２０の各バッファ１Ａには、図１２に示すように、シーケンス番号１０番から１３番までのパケットが蓄積されている。そのため、前記４段目の受信装置１１９，１２０は、前記３段目の受信装置１１６，１１７と同じタイミングでシーケンス番号１０番のパケットの再生を開始することができる。
【００７８】
また、前記４段目の受信装置１１９，１２０は、受信している各ストリームデータの中継段数がともに３であるため、前記数式２の計算結果は２となる。そのため、前記転送パケット読出手段１Ｊは、前記再生パケット読出手段１Ｈの再生用パケット読み出し点よりも２パケット分先を、転送用パケット読み出し点に設定する。そして、前記転送用パケット読み出し点に取り出すべきシーケンス番号を持つパケットが存在すれば、それを読み出し、下流装置に転送（送信）する。このとき、前記４段目の受信装置１１９で、たとえば、図１２に示したように、シーケンス番号が１０番から１３番までのパケットを蓄積しているとすれば、前記再生パケット読出手段１Ｈがシーケンス番号１０番のパケットを選択して読み出すときに、前記転送パケット読出手段１Ｊは、２パケット分先のシーケンス番号１２番のパケットを読み出し、下流装置へ送信する。またこのとき、図示は省略するが他の４段目の受信装置１２０のバッファ１Ａもシーケンス番号１０番から１３番までのパケットを蓄積しており、前記転送パケット読出手段１Ｊはシーケンス番号１２番のパケットを読み出し、下流装置に転送している。
【００７９】
前記５段目の受信装置１２１は、２つの上流装置が４段目の受信装置１１９，１２０である。そのため、受信している各ストリームデータの中継段数はともに４であり、前記数式１からバッファ長は２となる。またこのとき、図１２に示したように、前記４段目の受信装置１１９，１２０において、シーケンス番号１０番のパケットの再生を開始し、シーケンス番号１２番のパケットを転送（送信）するところであれば、前記５段目の受信装置１２１のバッファ１Ａには、図１２に示すように、シーケンス番号１０番と１１番のパケットが蓄積されている。そのため、前記５段目の受信装置１２１は、前記４段目の受信装置１１９，１２０と同じタイミングでシーケンス番号１０番のパケットの再生を開始することができる。
【００８０】
また、ここまでの説明は、前記最大中継段数を５とした場合を例に挙げて説明しているので、前記５段目の受信装置１２１は、受信したストリームデータを再生するだけで、他のストリーム受信装置に転送（送信）することはできない。
【００８１】
従来のストリーム受信装置において、前記下流装置に転送するためのパケットの読み出し点は、一般に、再生用のパケットの読み出し点と同じで、バッファの先頭のパケットに設定されている。そのため、前記実施例１のような受信転送方法では、ある同じ時刻に再生用のパケットを読み出すときに、図５および図６に示したように、各中継段数の受信装置で、読み出すパケットのシーケンス番号が異なっていた。図５および図６に示した例では、前記３段目の受信装置がシーケンス番号１番のパケットの再生を開始する時刻に、前記２段目の受信装置ではシーケンス番号が３番のパケットの再生を開始し、前記１段目の受信装置ではシーケンス番号が７番のパケットの再生を開始している。そのため、中継段数が異なる受信装置間で、前記ストリームデータの同一シーンを同時刻に再生することができなかった。
【００８２】
一方、本実施例２のストリーム受信装置では、前述のように、再生用のパケットを読み出すときに、前記再生用のパケットよりも数パケット先のパケットを読み出して他のストリーム受信装置（下流装置）に転送することで、前記実施例１と同様に、中継段数が異なる複数のストリームデータを受信するときにもストリームデータ（バッファ）の冗長性を確保することができるとともに、中継段数に関係なく、すべてのストリーム受信装置で前記ストリームデータの同一シーケンス番号のパケットをほぼ同じタイミングで再生することができる。
【００８３】
以上説明したように、本実施例２のストリーム受信装置を用いたストリームデータの受信転送方法によれば、複数の上流装置からストリームデータを受信するときに、上流装置毎に受信したストリームデータのバッファ長を設定するので、複数の上流装置の中継段数が異なる場合でも、受信したストリームデータ（バッファ）の冗長性を確保することができる。またこのとき、再生用のパケットよりも数パケット先のパケットを読み出して他のストリーム受信装置（下流装置）に転送することで、中継段数に関係なく、すべてのストリーム受信装置で前記ストリームデータの同一シーケンス番号のパケットをほぼ同じタイミングで再生することができる。
【実施例３】
【００８４】
図１３乃至図１５は、本発明による実施例３のストリーム受信転送方法を説明するための模式図であり、図１３は本実施例３におけるストリーム受信装置の接続例を示す図、図１４は３段目の受信装置のうち中継段数が小さい装置に接続し直した装置のバッファの状態および転送手順を説明する図、図１５は３段目の受信装置のうち中継段数が大きい装置に接続し直した装置のバッファの状態および転送手順を説明する図である。
【００８５】
前記実施例１および実施例２では、ある接続関係が保たれたストリーム受信装置１におけるバッファ長の設定および他のストリーム受信装置へのストリームデータの転送方法について説明したが、前記実施例１および実施例２で説明したストリーム受信装置１でストリームデータを受信しているときには、途中で上流のストリーム装置が停止または配信経路から離脱することがある。その場合、前記停止または離脱した上流装置からストリームデータを受信していたストリーム受信装置は、ストリームデータ（バッファ）の冗長性を確保するために、他のストリーム受信装置あるいはストリーム配信サーバに接続し直す必要がある。そこで、本実施例３では、前記停止または離脱した上流装置からストリームデータを受信していたストリーム受信装置が他のストリーム受信装置に接続し直して、ストリームデータ（バッファ）の冗長性を確保する方法について説明する。
【００８６】
本実施例３のストリーム受信転送方法を説明するにあたって、複数台の前記ストリーム受信装置１は、当初、図８に示したように接続されていたとする。そして、前記ストリームデータの受信および中継（転送）を行っている最中に、図１３に示すように、２段目の受信装置１１５が停止あるいは配信経路から離脱したとする。このとき、前記停止あるいは離脱した受信装置１１５からストリームデータを受信していた３段目の受信装置１１６，１１７，１１８は、ストリームデータ（バッファ）の冗長性を確保するために、他のストリーム受信装置に接続し直し、ストリームデータを受信する必要がある。このとき、新たに接続する前記ストリーム受信装置が、停止あるいは離脱した受信装置１１５と同じ２段目の受信装置であれば、受信するストリームデータのバッファの状態は変わらないので、再生用パケット読み出し点のパケットおよび転送用パケット読み出し点のパケットともに冗長性は確保される。そのため、新たな接続先は、もともと受信していた受信装置と同じ中継段数の受信装置とすることが好ましい。しかしながら、場合によっては、図１３に示したように、停止または離脱した受信装置１１５と同じ中継段数の受信装置を選択することができないこともある。そこで、図１３に示すように、前記接続し直す３段目の受信装置のうち、ある受信装置１１６は１段目の受信装置１１２からストリームデータを受信するように接続先を変更し、別の受信装置１１７は４段目の受信装置１１９からストリームデータを受信するように接続先を変更したとする。
【００８７】
このとき、接続先を１段目の受信装置１１２に変更した３段目の受信装置１１６は、もともと、図１０に示したように、各ストリームデータのバッファ長は６、転送用パケット読み出し点は再生用パケット読み出し点よりも４パケット分先に設定されていた。そして、前記３段目の受信装置１１６は、２段目の受信装置１１５の停止により、２段目の受信装置１１４と１段目の受信装置１１２からストリームデータを受信するようになると、図１４に示すように、前記２段目の受信装置１１４から受信したストリームデータのバッファ長は６のままであるが、前記１段目の受信装置１１２から受信したストリームデータのバッファ長が８に変更される。このとき、前記１段目の受信装置１１２から受信するストリームデータのバッファは、図１４に示したように、前記２段目の受信装置１１４が１段目の受信装置１１１，１１２から受信しているストリームデータのバッファと同じ状態である。そのため、前記３段目の受信装置１１６において、再生用パケット読み出し点のパケットの冗長性は確保される。
【００８８】
また、前記３段目の受信装置１１６における転送用パケット読み出し点の設定は、前記受信装置１１６が転送（送信）したストリームデータを受信している４段目の受信装置１１９，１２０に変更がないため、接続先を変更する前の設定を維持し、図１４に示したように、再生用パケット読み出し点よりも４パケット分先を前記転送用パケット読み出し点とする。このとき、前記３段目の受信装置１１６は、もともとの２段目の受信装置１１５よりも中継段数が少ない１段目の受信装置１１２に接続先を変更したので、受信するストリームデータのバッファ長は長くなっている。そのため、接続先を変更した後も、転送用パケット読み出し点のパケットの冗長性を確保することができる。
【００８９】
一方、接続先を４段目の受信装置１１９に変更した３段目の受信装置１１７も、もともと、図１０に示したように、各ストリームデータのバッファ長は６、転送用パケット読み出し点は再生用パケット読み出し点よりも４パケット分先に設定されていた。しかしながら、前記３段目の受信装置１１９は、２段目の受信装置１１５の停止により、２段目の受信装置１１４と４段目の受信装置１１９からストリームデータを受信するようになると、図１５に示すように、前記２段目の受信装置１１４から受信したストリームデータのバッファ長は６のままであるが、前記４段目の受信装置１１９から受信したストリームデータのバッファ長は２に変更される。このとき、前記４段目の受信装置１１９から受信するストリームデータのバッファは、図１２に示した前記５段目の受信装置１２１が４段目の受信装置１１９，１２０から受信しているストリームデータのバッファと同じ状態である。そのため、前記３段目の受信装置１１７において、再生用パケット読み出し点のパケットの冗長性は確保される。
【００９０】
また、前記３段目の受信装置１１７における転送用パケット読み出し点の設定は、前記受信装置１１７が転送（送信）したストリームデータを受信している４段目の受信装置１１９，１２０に変更がないため、接続し直す前の設定を維持し、図１５に示したように、再生用パケット読み出し点よりも４パケット分先を前記転送用パケット読み出し点とする。ただし、このようにすると、前記３段目の受信装置１１７において、前記転送用パケット読み出し点に関しては、図１５に示したように、前記２段目の受信装置１１４から受信しているストリームデータのバッファのみに読み出し点があることになり、冗長性が確保されていないことになる。つまり、接続先を変更した後、前記３段目の受信装置１１７から４段目の受信装置１１９，１２０に転送するストリームデータに関しては、冗長性が確保されていない状態で転送されることになる。しかしながら、前記４段目の受信装置１１９，１２０では、もう一方の３段目の受信装置１１６から冗長性が確保されたパケットを受信しているので、前記４段目の受信装置１１９，１２０において各３段目の受信装置１１６，１１７から受信しているストリームデータのバッファの冗長性を確保することができる。
【００９１】
また、図を用いた詳細な説明は省略するが、前記３段目の受信装置１１７が、前記４段目の受信装置１１９ではなく、同じ中継段数である３段目の受信装置１１６，１１８からストリームデータを受信するように接続先の変更をした場合、そのストリームデータのバッファは前記４段目の受信装置１１９，１２０が前記３段目の受信装置１１６，１１７から受信しているストリームデータのバッファと同じ状態になる。そのため、再生用パケット読み出し点のパケットの冗長性は確保される。また、この場合も前記３段目の受信装置１１７における転送用パケット読み出し点のパケットの冗長性は確保することができないが、前記４段目の受信装置１１９，１２０では、もう一方の３段目の受信装置１１６から冗長性が確保されたパケットを受信しているので、前記４段目の受信装置１１９，１２０において各３段目の受信装置１１６，１１７から受信しているストリームデータのバッファの冗長性を確保することができる。
【００９２】
以上説明したように、本実施例３のストリームデータ受信転送方法によれば、ストリームデータを受信する上流装置を変更するときに、変更後の上流装置の中継段数が、変更前の中継段数よりも小さい場合でも、前記再生用パケット読み出し点のパケットおよび転送用パケット読み出し点のパケットともに冗長性を確保することができる。
【００９３】
また、変更後の上流装置の中継段数が、変更前の中継段数よりも大きい場合、前記再生用パケット読み出し点のパケットの冗長性のみを確保することができるが、ストリームデータを転送している受信装置（下流装置）に変更がない場合、接続先を変更する前の転送用パケット読み出し点を維持することで、前記ストリームデータを受信している下流装置における再生用パケット読み出し点のパケットおよび転送用パケット読み出し点のパケットともに冗長性を確保することができる。なお、前記変更前の上流装置よりも中継段数が大きい受信装置を新たな上流装置として選択するとき、中継段数が最大中継段数と等しいストリーム受信装置を選択できないことは言うまでもない。
【実施例４】
【００９４】
図１６および図１７は、本発明による実施例４のストリーム受信転送方法を説明するための模式図であり、図１６は本実施例４におけるストリーム受信装置の接続例を示す図、図１７は新たなストリームデータ受信装置が接続されたときのバッファの状態および転送手順を説明する図である。
【００９５】
前記実施例３では、前記ストリーム受信装置がストリームデータを受信する上流装置を変更したときに、変更後も再生用パケット読み出し点のパケットおよび転送用パケット読み出し点のパケットの冗長性が確保できることを説明した。そこで、本実施例４では、前記実施例３で説明したような手順でストリームデータを受信する上流装置を変更したストリーム受信装置に、新たなストリーム受信装置が接続されたときの、ストリームデータの転送手順について説明する。
【００９６】
本実施例４では、前記新たなストリーム受信装置が接続される直前に、複数のストリーム受信装置１が、図１６に示すような状態で接続されているとする。このとき、最大中継段数は５であり、蓄積係数は２であるとする。そのため、図１６に示した１段目の受信装置１３１，１３２は１０個のパケットをバッファに蓄積しており、先頭のパケット、すなわち再生用パケット読み出し点のパケットから８パケット分先を転送用パケット読み出し点とし、下流装置に転送（送信）している。また、２段目の受信装置１３３，１３４は８個のパケットをバッファに蓄積しており、再生用パケット読み出し点のパケットから６パケット分先を転送用パケット読み出し点とし、下流装置に転送（送信）している。また、３段目の受信装置１３５，１３６のうち、紙面上側の受信装置１３５は、２つの上流装置が２段目の受信装置１３３，１３４であり、６個のパケットをバッファに蓄積しており、再生用パケット読み出し点のパケットから４パケット分先を転送用パケット読み出し点とし、下流装置に転送（送信）している。
【００９７】
また、３段目の受信装置１３５，１３６のうち、紙面下側の受信装置１３６は、もともとは２つの上流装置のうちの一方あるいは両方が２段目の受信装置であったが、前記上流装置の停止あるいは離脱により、２つの上流装置が１段目の受信装置１３１，１３２に変更されているとする。またこのとき、前記３段目の受信装置１３６がストリームデータを転送（送信）している４段目の受信装置１３７は変更されていないとする。そのため、前記３段目の受信装置１３６では、８個のパケットを各バッファに蓄積しているが、転送用パケット読み出し点は、紙面上側の３段目の受信装置１３５と同様に、再生用パケット読み出し点から４パケット分先に設定されている。
【００９８】
前記各ストリーム受信装置１が、図１６に示したような状態であるときに、新たなストリーム受信装置１３８がストリームデータの受信を要求したとする。また、前記新たな受信装置１３８は、ストリームデータの受信を要求する上流装置として、たとえば、図１７に示すように、前記上流装置を変更した３段目の受信装置１３６と、上流装置を変更していない２段目の受信装置１３９を選択したとする。
【００９９】
このとき、前記３段目の受信装置１３６は、２つの上流装置が１段目の受信装置１３１，１３２になっているので、実際には２段目の受信装置となっている。そのため、図１７に示すように、上流装置を変更する前からストリームデータを転送していた前記４段目の受信装置１３７に対しては、上流装置を変更する前の転送用パケット読み出し点の設定を維持する。そして、前記新たな受信装置１３８に対しては、２段目の受信装置として新たな転送用パケット読み出し点を設定し、ストリームデータを転送（送信）する。つまり、前記３段目の受信装置１３６は、図１７に示したように、前記４段目の受信装置１３７に対しては再生用パケット読み出し点から４パケット分先のパケットを読み出して転送し、前記新たな受信装置１３８に対しては再生用パケット読み出し点から６パケット分先のパケットを読み出して転送する。そのため、前記新たな受信装置１３８において、前記３段目の受信装置１３６から受信したストリームデータのバッファには、図１７に示すように、６個のパケットが蓄積される。
【０１００】
また、詳細な説明は省略するが、前記新たな受信装置１３８において、前記２段目の受信装置１３９から受信したストリームデータのバッファには、前記実施例２等で説明したように、６個のパケットが蓄積される。
【０１０１】
その結果、前記新たな受信装置１３８では、図１７に示すように、再生用パケット読み出し点のパケットの冗長性が確保される。また、詳細な説明は省略するが、前記新たな受信装置１３８の中継段数は３段目になるので、他のストリーム受信装置にストリームデータを転送（送信）するときには、前記実施例２等で説明したように、前記再生用パケット読み出し点から４パケット分先を転送用パケット読み出し点として設定する。
【０１０２】
以上説明したように、本実施例４のストリームデータ受信転送方法によれば、前記ストリームデータ受信装置において、新たなストリーム受信装置にストリームデータを転送（送信）する前に、上流装置を変更して実質的な中継段数が変わった場合にも、上流装置を変更する前からストリームデータを転送していた受信装置のストリームデータ（バッファ）の冗長性を確保しながら、前記新たな受信装置のストリームデータ（バッファ）の冗長性を確保することができる。
【実施例５】
【０１０３】
図１８乃至図２２は、本発明による実施例５のストリームデータ受信転送方法を説明するための模式図であり、図１８は本実施例５において前提となるストリーム受信装置の接続例を示す図、図１９は図１８に示した接続例における各ストリーム受信装置のバッファの状態を示す図、図２０は図１８に示した接続例における問題点を説明する図、図２１は図２０に示した問題点を解決する方法を説明する図、図２２は図２１に示した解決方法により変更された各ストリーム受信装置のバッファの状態を示す図である。
【０１０４】
前記実施例１乃至実施例４では、ストリームデータの送受信を行うストリーム受信装置間で前記最大中継段数および蓄積係数の送受信も行っているとして、受信した各ストリームデータのバッファ長の設定、転送用パケット読み出し点の設定を行うような受信転送方法を説明した。しかしながら、この場合、前記最大中継段数および蓄積係数を、前記ストリームデータの配信を行っている最中に変更することが難しい。また、前記ストリーム受信装置によっては、たとえば、パケットの転送能力が低く、複数台の下流装置にパケットを転送することができない場合がある。そのため、前記ストリームデータを受信することができるストリーム受信装置の数に限度があり、新たにストリームデータの受信を希望するストリーム受信装置が上流装置を確保できず、ストリームデータを受信できないという問題が生じることがある。そこで、本実施例５では、前記最大中継段数および蓄積係数を動的に変更し、新たなストリーム受信装置が上流装置を確保できるようにする方法の一例を説明する。
【０１０５】
本実施例５のストリームデータ受信転送方法では、前記各ストリーム受信装置１は、たとえば、図１８に示すように、ストリームデータを受信する上流装置のほかに、前記最大中継段数および蓄積係数を一括して管理する管理装置５に接続されている。つまり、本実施例５の受信転送方法では、前記各受信装置１は、上流装置からではなく、前記管理装置５から最大中継段数および蓄積係数を取得する。このとき、前記管理装置５において、あるストリームデータの配信に対して、最大中継段数が３、蓄積係数が２と設定、管理されているとすると、前記各受信装置１は、前記実施例２等で説明したような手順で、受信した各ストリームデータのバッファ長および転送用パケット読み出し点の設定を行う。そのため、１段目の受信装置１４１，１４２，１４３は、図１９に示すように、各バッファに６個のパケットを蓄積し、再生用パケット読み出し点から４パケット分先のパケットを下流装置に転送（送信）する。
【０１０６】
また、２段目の受信装置１４４，１４５は、２つの上流装置が１段目の受信装置１４１，１４２であり、図１９に示すように、各バッファに４個のパケットを蓄積し、再生用パケット読み出し点から２パケット分先のパケットを下流装置に転送している。また、図示は省略するが、２段目の受信装置において、一方の上流装置がストリーム配信サーバである場合、前記ストリーム配信サーバから直接受信したストリームデータのバッファには６個のパケットを蓄積する。
【０１０７】
また、３段目の受信装置１４６，１４７は、２つの上流装置が２段目の受信装置１４４，１４５であり、図１９に示すように、各バッファに２個のパケットを蓄積する。また、一方の上流装置が１段目の受信装置１４３である３段目の受信装置１４８では、図１９に示すように、前記１段目の受信装置１４３から受信したストリームデータのバッファには４個のパケットを蓄積する。また、図示は省略するが、一方の上流装置がストリーム配信サーバである３段目の受信装置では、前記ストリーム配信サーバから直接受信したストリームデータのバッファには６個のパケットを蓄積する。なお、最大中継段数が３に設定されているので、前記３段目の受信装置１４６，１４７，１４８は、他のストリーム受信装置にストリームデータを転送（送信）することはできない。
【０１０８】
このような状態で、たとえば、新たなストリーム受信装置１４９がストリームデータの受信を希望した場合を考える。このとき、前記新たな受信装置１４９は、図２０に示すように、前記３段目の受信装置１４６，１４７を上流装置として選択し、ストリームデータを受信することはできない。そこで、前記新たな受信装置１４９は、２段目の受信装置１４４，１４５または１段目の受信装置１４１，１４２，１４３、あるいはストリーム配信サーバ４０１，４０２を前記上流装置として選択しなければならない。しかしながら、前記２段目の受信装置または１段目の受信装置、あるいはストリーム配信サーバを前記上流装置として選択する場合、選択した受信装置あるいは配信サーバの転送能力が低く、前記新たな受信装置に対してストリームデータを十分な速度で転送（送信）できないことがある。その結果、前記新たな受信装置は、冗長性を確保するために複数台の上流装置からストリームデータを受信することができないという問題が生じる可能性がある。
【０１０９】
そこで、前記新たな受信装置１４９が複数台の上流装置からストリームデータを受信できないような場合、たとえば、前記新たな受信装置１４９は、前記管理装置５に前記最大中継段数の変更を要求する。そして、前記最大中継段数の変更要求を受信した管理装置５は、たとえば、図２１に示すように、前記最大中継段数を４、蓄積係数を１に変更するように、前記各受信装置１（１４１〜１４８）に変更命令を送信する。
【０１１０】
前記各受信装置１（１４１〜１４８）は、前記管理装置５からの最大中継段数および蓄積係数の変更命令を受信すると、前記各受信装置１（１４１〜１４８）に設けられた最大中継段数・蓄積係数保持手段１Ｃに保持されている最大中継段数および蓄積係数を変更する。そして、前記バッファ長算出手段１Ｅにおいて、前記変更した最大中継段数および蓄積係数を用いて、各上流装置から受信したストリームデータのバッファ長を再計算する。前記バッファ１Ａは、前記バッファ長算出手段１Ｅにおける再計算の結果に基づいて、各ストリームデータのバッファ長を変更する。また、前記転送パケット読出手段１Ｊは、前記変更された最大中継段数および蓄積係数、ならびにバッファ長に基づいて、転送パケット読み出し点を再計算し、変更する。
【０１１１】
この結果、もともとストリームデータを受信していた１段目の各受信装置１４１，１４２，１４３では、図２２に示すように、ストリームデータのバッファ長が４、転送用パケット読み出し点が再生用パケット読み出し点のパケットから３パケット分先に変更される。同様に、２段目の各受信装置１４４，１４５は、ストリームデータのバッファ長が３、転送用パケット読み出し点が再生用パケット読み出し点のパケットから２パケット分先に変更される。同様に、３段目の各受信装置のうち、２つの上流装置が２段目の受信装置である受信装置１４６，１４７は、各ストリームデータのバッファ長が２、転送用パケット読み出し点が再生用パケット読み出し点のパケットから１パケット分先に変更される。また、３段目の受信装置のうち、一方の上流装置が１段目の上流装置である受信装置１４８では、前記１段目の受信装置から受信したストリームデータのバッファ長は３となる。
【０１１２】
このように、前記管理装置５からの変更命令に応じて、前記１段目から３段目の各受信装置１（１４１〜１４８）におけるストリームデータのバッファ長および転送用パケット読み出し点を動的に変更すれば、前記３段目の受信装置１４６，１４７，１４８は、他のストリーム装置にストリームデータを転送（送信）することができるようになる。つまり、図２２に示したように、新たな受信装置１４９，１５０が前記３段目の受信装置１４６，１４７，１４８からストリームデータを受信することができるようになる。そのため、たとえば、前記ストリームデータを配信する際に想定していた数よりも多いストリーム受信装置がストリームデータの受信を希望した場合や、中継段数が小さいストリーム受信装置のデータ転送能力が低く、１台の受信装置から複数の下流装置にストリームデータを転送（送信）できず、設定した最大中継段数では想定した数のストリーム受信装置にストリームデータを配信することができないような場合に対応することができる。
【０１１３】
以上説明したように、本実施例５のストリームデータ受信転送方法によれば、前記管理装置からの最大中継段数および蓄積係数の変更命令に基づいて、各受信装置が受信するストリームデータのバッファ長および転送用パケット読み出し点を動的に変更することができる。そのため、ストリームデータの配信中に、前記ストリームデータを受信することが可能な受信装置の数を増やすことが容易になる。
【０１１４】
以上、本発明を、前記実施例に基づき具体的に説明したが、本発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において、種々変更可能であることはもちろんである。
【０１１５】
たとえば、前記実施例１乃至実施例５では、２つの上流装置からストリームデータを受信して冗長化している例を挙げて説明したが、３つ以上の上流装置からストリームデータを受信してもよい。
【０１１６】
また、図１および図６に示した前記ストリーム受信装置の構成は一例であり、前記ストリーム受信装置は、前記実施例１乃至実施例４で説明したような方法でストリームデータの冗長性を確保するとともに、前記実施例５で説明したような方法でバッファ長および転送用パケット読み出し点を動的に変更できる手段を備えていればよい。そのため、たとえば、図１あるいは図６に示したような各手段の代わりに、各手段で行う処理をまとめて行う１つの大きな手段を備えるような受信装置であってもよい。
【０１１７】
また、前記実施例１および実施例２で説明した前記ストリーム受信装置は、たとえば、コンピュータとプログラムによって実現することもできる。このとき、前記プログラムは、前記実施例１乃至実施例５で説明したような処理を前記コンピュータに実行させる命令が記述されたものとすればよい。そして、前記プログラムを前記コンピュータに実行させればよい。またこのとき、前記プログラムは、磁気的または電気的、あるいは光学的な記録媒体に記録して提供することもできるし、インターネット等のネットワークを通して提供することもできる。
【図面の簡単な説明】
【０１１８】
【図１】本発明による実施例１のストリーム受信装置の概略構成を示す模式図である。
【図２】本実施例１のストリーム受信装置の動作を説明するための模式図であり、各上流装置とのデータの受け渡しの概要を説明する図である。
【図３】本実施例１のストリーム受信装置の動作を説明するための模式図であり、本実施例１のストリーム受信装置の接続例を示す図である。
【図４】本実施例１のストリーム受信装置の動作を説明するための模式図であり、図３の１段目および２段目の受信装置のバッファの状態の一例を示す図である。
【図５】本実施例１のストリーム受信装置の動作を説明するための模式図であり、図３の３段目の受信装置のバッファの状態の一例を示す図である。
【図６】本発明による実施例２のストリーム受信装置の概略構成を示す模式図である。
【図７】本実施例２のストリーム受信装置の動作を説明するための模式図であり、ストリームデータの転送原理を説明する図である。
【図８】本実施例２のストリーム受信装置の動作を説明するための模式図であり、本実施例２のストリーム受信装置の接続例を示す図である。
【図９】本実施例２のストリーム受信装置の動作を説明するための模式図であり、１段目の受信装置のストリームデータの転送手順を説明する図である。
【図１０】本実施例２のストリーム受信装置の動作を説明するための模式図であり、２段目の受信装置のストリームデータの転送手順を説明する図である。
【図１１】本実施例２のストリーム受信装置の動作を説明するための模式図であり、３段目の受信装置へのストリームデータの転送手順を説明する図である。
【図１２】本実施例２のストリーム受信装置の動作を説明するための模式図であり、４段目の受信装置へのストリームデータの転送手順を説明する図である。
【図１３】本発明による実施例３のストリーム受信転送方法を説明するための模式図であり、本実施例３におけるストリーム受信装置の接続例を示す図である。
【図１４】本発明による実施例３のストリーム受信転送方法を説明するための模式図であり、３段目の受信装置のうち中継段数が小さい装置に接続し直した装置のバッファの状態および転送手順を説明する図である。
【図１５】本発明による実施例３のストリーム受信転送方法を説明するための模式図であり、３段目の受信装置のうち中継段数が大きい装置に接続し直した装置のバッファの状態および転送手順を説明する図である。
【図１６】本発明による実施例４のストリーム受信転送方法を説明するための模式図であり、本実施例４におけるストリーム受信装置の接続例を示す図である。
【図１７】本発明による実施例４のストリーム受信転送方法を説明するための模式図であり、新たなストリームデータ受信装置が接続されたときのバッファの状態および転送手順を説明する図である。
【図１８】本発明による実施例５のストリームデータ受信転送方法を説明するための模式図であり、本実施例５において前提となるストリーム受信装置の接続例を示す図である。
【図１９】本発明による実施例５のストリームデータ受信転送方法を説明するための模式図であり、図１８に示した接続例における各ストリーム受信装置のバッファの状態を示す図である。
【図２０】本発明による実施例５のストリームデータ受信転送方法を説明するための模式図であり、図１８に示した接続例における問題点を説明する図である。
【図２１】本発明による実施例５のストリームデータ受信転送方法を説明するための模式図であり、図２０に示した問題点を解決する方法を説明する図である。
【図２２】本発明による実施例５のストリームデータ受信転送方法を説明するための模式図であり、図２１に示した解決方法により変更された各ストリーム受信装置のバッファの状態を示す図である。
【図２３】従来のストリームデータ配信方法における問題点の１つを説明する模式図である。
【符号の説明】
【０１１９】
１…ストリーム受信装置
１Ａ…バッファ（FIFOバッファ）
１Ｂ…バッファ読み出し手段
１Ｃ…最大中継段数・蓄積係数保持手段
１Ｄ…バッファ別中継段数保持手段
１Ｅ…バッファ長算出手段
１Ｆ…パケット送受信手段
１Ｇ…再生処理手段
２…上流装置
３…下流装置
４０１，４０２…ストリーム配信サーバ
５…管理装置
【図１】
2006025338.tif 000003
【図２】
2006025338.tif 000004
【図３】
2006025338.tif 000005
【図４】
2006025338.tif 000006
【図５】
2006025338.tif 000007
【図６】
2006025338.tif 000008
【図７】
2006025338.tif 000009
【図８】
2006025338.tif 000010
【図９】
2006025338.tif 000011
【図１０】
2006025338.tif 000012
【図１１】
2006025338.tif 000013
【図１２】
2006025338.tif 000014
【図１３】
2006025338.tif 000015
【図１４】
2006025338.tif 000016
【図１５】
2006025338.tif 000017
【図１６】
2006025338.tif 000018
【図１７】
2006025338.tif 000019
【図１８】
2006025338.tif 000020
【図１９】
2006025338.tif 000021
【図２０】
2006025338.tif 000022
【図２１】
2006025338.tif 000023
【図２２】
2006025338.tif 000024
【図２３】
2006025338.tif 000025