(57)【要約】【課題】  ネットワークの状況によらず常に最適な環境で動画や音声等のデータの通信を行うことができる送信装置、受信装置、通信システム、送信方法、受信方法、これらのプログラム及びサーバ装置を提供すること。【解決手段】  本発明に係る送信装置１００は、時間帯や接続相手である受信装置２００によって変化するネットワークの状況に応じて、第１、第２及び第３のコーデック３９ａ、３９ｂ及び３９ｃのうち最適なコーデックを選択するので、受信装置２００は常に最適な画質及び音質でデータを受信することができる。したがって、たとえパケットのバーストロスが発生したとしてもスムーズな通信ができる。【選択図】図９
2006033396.tif 000002
【特許請求の範囲】
【請求項１】
第１のコーデックを用いてデータをエンコードする第１のエンコーダと、
前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、
前記第１及び第２のエンコーダでそれぞれエンコードされたデータを、ネットワークを介して接続された受信装置に送信可能な送信手段と、
前記ネットワークの状況を監視する監視手段と、
少なくとも前記監視されるネットワークの状況に応じて、前記データを、前記第１及び第２のエンコーダのうちいずれのエンコーダでエンコードして前記送信手段により送信させるかを選択する選択手段と
を具備することを特徴とする送信装置。
【請求項２】
請求項１に記載の送信装置であって、
前記監視手段は、前記ネットワーク上を伝送するデータのロス率を取得する手段を有し、
前記選択手段は、前記取得されたロス率に応じて前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択することを特徴とする送信装置。
【請求項３】
請求項１に記載の送信装置であって、
前記監視手段は、前記ネットワーク上を伝送するデータのロスがランダムロスであるかバーストロスであるかを検出する手段を有し、
前記選択手段は、前記検出の結果に応じて前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択することを特徴とする送信装置。
【請求項４】
請求項３に記載の送信装置であって、
前記監視手段により前記ランダムロスが検出された場合に、当該ランダムロスによって喪失したデータを前記受信装置に送信する手段をさらに具備することを特徴とする送信装置。
【請求項５】
請求項１に記載の送信装置であって、
前記受信装置の能力及び設定のうち少なくとも一方の情報を含むステータス情報を、前記受信装置から前記ネットワークを介して取得する手段をさらに具備し、
前記選択手段は、前記取得されたステータス情報に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する手段を有することを特徴とする送信装置。
【請求項６】
請求項１に記載の送信装置であって、
当該送信装置の負荷の状況を監視する手段をさらに具備し、
前記選択手段は、前記監視される負荷状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する手段を有することを特徴とする送信装置。
【請求項７】
第１のコーデックを用いてデータをエンコードする第１のエンコーダと、
前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、
前記第１及び第２のエンコーダでそれぞれエンコードされたデータを、ネットワークを介して接続された受信装置に送信可能な送信手段と、
前記受信装置の能力及び設定のうち少なくとも一方の情報を含むステータス情報を、前記受信装置から前記ネットワークを介して取得する手段と、
前記取得された前記ステータス情報に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダでエンコードして前記データを前記送信手段により送信させるかを選択する選択手段と
を具備することを特徴とする送信装置。
【請求項８】
第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされた第１及び第２のデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する第１の選択手段とを有する送信装置から、前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信する手段と、
前記第１のコーデックを用いて前記第１のデータをデコードする第１のデコーダと、
前記第２のコーデックを用いて前記第２のデータをデコードする第２のデコーダと、
前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択する第２の選択手段と
具備することを特徴とする受信装置。
【請求項９】
第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされたデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する第１の選択手段とを有する送信装置と、
前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信する手段と、前記第１のコーデックを用いて前記第１のデータをデコードする第１のデコーダと、前記第２のコーデックを用いて前記第２のデータをデコードする第２のデコーダと、前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択する第２の選択手段と有する受信装置と
を具備することを特徴とする通信システム。
【請求項１０】
ネットワークを介して受信装置に接続された送信装置がデータを送信する方法であって、
前記ネットワークの状況を監視するステップと、
少なくとも前記監視されるネットワークの状況に応じて、第１のコーデックを用いてデータをエンコードする第１のエンコーダ、及び前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダのうちいずれのエンコーダでエンコードするかを選択するステップと、
前記選択されたエンコーダでエンコードされた前記データを前記受信装置に送信するステップと
を具備することを特徴とする送信方法。
【請求項１１】
第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされた第１及び第２のデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する選択手段とを有する送信装置から、前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信するステップと、
前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択するステップと
を具備することを特徴とする受信方法。
【請求項１２】
ネットワークを介して受信装置に接続された送信装置がデータを送信するプログラムであって、
前記送信装置に、
前記ネットワークの状況を監視するステップと、
少なくとも前記監視されるネットワークの状況に応じて、第１のコーデックを用いてデータをエンコードする第１のエンコーダ、及び前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダのうちいずれのエンコーダでエンコードするかを選択するステップと、
前記選択されたエンコーダでエンコードされた前記データを前記受信装置に送信するステップと
を実行させる送信プログラム。
【請求項１３】
受信装置に、
第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされた第１及び第２のデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する選択手段とを有する送信装置から、前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信するステップと、
前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択するステップと
を実行させる受信プログラム。
【請求項１４】
第１のコーデックを用いてデータをエンコードする第１のエンコーダと、
前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、
ネットワークを介して接続された複数の受信装置のそれぞれの能力及び設定のうち少なくとも一方の情報を含むステータス情報を、前記各受信装置から前記ネットワークを介して取得する手段と、
前記ステータス情報に基づき、前記第１及び第２の受信装置が、前記第１及び第２のコーデックを用いてそれぞれデコードする第１及び第２のデコーダをそれぞれ有することを判別した場合に、前記第１及び第２のデータを前記第１及び第２の受信装置にそれぞれ送信するように制御する手段と
を具備することを特徴とするサーバ装置。
【請求項１５】
請求項１４に記載のサーバ装置であって、
前記第１及び第２のエンコーダの両方が使用可能か、前記第１のエンコーダのみが使用可能かを判別する手段をさらに具備し、
前記制御手段は、前記第１のエンコーダのみが使用可能と判別された場合であって、前記ステータス情報に基づき前記第２の受信装置が前記第１のデコーダを有すると判別した場合に、前記第１のデータを前記第１及び第２の受信装置に送信するように制御することを特徴とするサーバ装置。
【請求項１６】
請求項１４に記載のサーバ装置であって、
前記ネットワークの状況を監視するネットワーク監視手段と、
少なくとも前記監視されるネットワークの状況に応じて、前記データを、前記第１及び第２のエンコーダのうちいずれのエンコーダでエンコードして前記送信手段により送信させるかを選択する手段と
をさらに具備することを特徴とするサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画や音声等のデータを送信または受信等する送信装置、受信装置、通信システム、送信方法、受信方法、送信プログラム、受信プログラム及びサーバ装置に関する。
【背景技術】
【０００２】
従来から、動画や音声等のデータを送受信する場合、送信装置が持つコーデックに従ってエンコードされたデータがパケット化され、そのパケットは例えばインターネット等のネットワークを介して受信装置に送信される。受信装置は、受信したパケットのデータを上記コーデックに従ったデコーダでデコードして再生する。
【０００３】
このようにネットワーク上で動画や音声等のデータのパケットがやりとりされる場合、ネットワークの混雑状況やルータ等の性能によっては、パケットのロスや伝送遅延等が発生する。このようにパケットロスや伝送遅延が多くなると、例えばテレビ会議システム等においてはリアルタイム性が損なわれ、画質や音質が低下したり、例えば動画データの一部が欠けたりするといった問題がある。送信装置及び受信装置において予めユーザにより設定された使用帯域（ビットレート）等が時間によって異なるネットワーク上では、接続時における初期設定だけでは、必ずしも高画質及び高音質なデータを受信側が受信できるとは限らない。
【０００４】
このような問題を解決するために、従来から、動的にビットレートを変更させたり、受信側がロストパケットの再送をしたりする技術がある（例えば、特許文献１、２参照。）。  
【特許文献１】特開２００３−２４４６９５号公報（段落[００４９]〜[００５４]）
【特許文献２】特開２００３−１６９０４０号公報（段落[００６０]、図４、図１１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ビットレートを変更すると、送信装置及び受信装置で設定されたコーデックに対してビットレートを下げてしまうため、フレームレートを満足する通信ができず、ぎこちない通信になる。また、時間帯、接続相手側の機器によってネットワーク状況が異なるため、設定されたビットレート等の設定が最適なものであるかどうかを一般ユーザが判別することは困難である。
【０００６】
特に、テレビ会議システムで利用されるＭＣＵ（Multi-point Control Unit）接続においては、ＭＣＵサーバと各端末装置との接続時のネゴシエーションにおいて当該各端末装置の能力を共通させてから通信が行われる。したがって、ある一の端末装置が高画質、高音質なコーデックに対応していても、他の端末装置が低画質、低音質なコーデックしか持っていない場合は、当該一の端末装置が所期の能力を発揮できない。また、ビットレートの変更に対しても、ネットワークの負荷が少ない端末も合わせて、その変更を受けたデータを受信するため、画質に影響する。つまり、従来のＭＣＵシステムでは、高い機能を持つ端末装置同士のみの接続でないと、高機能な動画、音声等の配信を行うことができなかった。
【０００７】
以上のような事情に鑑み、本発明の目的は、ネットワークの状況によらず常に最適な環境で動画や音声等のデータの通信を行うことができる送信装置、受信装置、通信システム、送信方法、受信方法、これらのプログラム及びサーバ装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係る送信装置は、第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされたデータを、ネットワークを介して接続された受信装置に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記データを、前記第１及び第２のエンコーダのうちいずれのエンコーダでエンコードして前記送信手段により送信させるかを選択する選択手段とを具備する。
【０００９】
本発明では、時間帯や接続相手である受信装置によって変化するネットワークの状況に応じて、第１のコーデック及び第２のコーデックのうち最適なコーデックを選択するので、受信装置は常に最適な画質及び音質でデータを受信することができる。ここで、「第１のコーデックとは異なる第２のコーデック」とは、例えば規格や形式が同じであっても、アルゴリズムまたはプログラムが異なれば、異なるコーデックであることを意味する。ネットワークの状況とは、例えばネットワーク上での伝送遅延時間、データのロス率等の情報である。以下、同様である。
【００１０】
本発明の一の形態によれば、前記監視手段は、前記ネットワーク上を伝送するデータのロス率を取得する手段を有し、前記選択手段は、前記取得されたロス率に応じて前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する。送信装置がロス率を取得することにより、より正確なネットワークの状況を把握することができ、最適なビットレートでデータを送信することができる。
【００１１】
本発明の一の形態によれば、前記監視手段は、前記ネットワーク上を伝送するデータのロスがランダムロスであるかバーストロスであるかを検出する手段を有し、前記選択手段は、前記検出の結果に応じて前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する。ランダムロスとバーストロスとに応じて第１及び第２のコーデックを使い分けることで最適な通信が可能となる。具体的には、例えば送信装置がネットワークのデータの伝送遅延時間を計測するか、ランダムロスかバーストロスかを検出することが可能となる。あるいは、受信装置がパケットロス率を算出して、このロス率の情報を送信装置に送るようにすることによっても、送信装置はランダムロスかバーストロスかを検出することが可能となる。バーストロスの場合、ある一定時間内、または、ある単位時間内のロス率が、ランダムロスの場合に比べかなり高くなるので両者を検出することができる。
【００１２】
本発明の一の形態に係る送信装置は、前記監視手段により前記ランダムロスが検出された場合に、当該ランダムロスによって喪失したデータを前記受信装置に送信する手段をさらに具備する。具体的には、ランダムロスによって喪失したデータの再送を要求する信号を受信装置から受信した場合に、監視手段はランダムロスが発生したことを検出することができる。ランダムロスが発生している場合には、ネットワークにそれほど大きな負荷はかかっていない状況なので、データを再送してもネットワークを混雑させることはない。
【００１３】
本発明の一の形態に係る送信装置は、前記受信装置の能力及び設定のうち少なくとも一方の情報を含むステータス情報を、前記受信装置から前記ネットワークを介して取得する手段をさらに具備し、前記選択手段は、前記取得されたステータス情報に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する手段を有する。これにより、受信装置のステータス情報に応じて最適な通信が可能となる。
【００１４】
ステータス情報のうち能力とは、例えば、プロセッサのクロック周波数、現在のプロセッサの使用率、メモリ（外部メモリも含む）の総容量、現在のメモリ使用量等の情報である。ステータス情報のうち設定とは、送信装置と受信装置とが最初に接続された時点（初期状態）では、受信装置に対するユーザの設定情報である。その後は、ネットワークの状況に応じて受信装置が自動で設定される情報である。これらの設定情報は、例えばコーデック、ビットレート等の設定情報である。初期状態では、設定情報には、映像の画質、音質、ネットワークの帯域等のうちどれを優先させるか等のユーザ設定も含まれる。以下、同様である。例えば、低画質であってもパケットロスを発生させないで再生できるようにするには、ネットワークの帯域を優先させればよい。つまり、帯域に余裕を持たせるために低ビットレートに設定される。
【００１５】
本発明の一の形態に係る送信装置は、当該送信装置の負荷の状況を監視する手段をさらに具備し、前記選択手段は、前記監視される負荷状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する手段を有する。これにより、例えば送信装置の負荷が大きい場合に低ビットレート用のコーデックが用いられることで、プロセッサの負荷を軽減することができる。負荷が大きいか否かは、例えば送信装置が持つプロセッサ、メモリの使用率等が閾値を超えるか否かによって判別することができる。
【００１６】
本発明の別の観点に係る送信装置は、第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされたデータを、ネットワークを介して接続された受信装置に送信可能な送信手段と、前記受信装置の能力及び設定のうち少なくとも一方の情報を含むステータス情報を、前記受信装置から前記ネットワークを介して取得する手段と、前記取得された前記ステータス情報に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダでエンコードして前記データを前記送信手段により送信させるかを選択する選択手段とを具備する。
【００１７】
本発明では、受信装置のステータス情報に応じて、第１のコーデック及び第２のコーデックのうち最適なコーデックを選択するので、受信装置は常に最適な画質及び音質でデータを受信することができる。
【００１８】
本発明に係る受信装置は、第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされた第１及び第２のデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する第１の選択手段とを有する送信装置から、前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信する手段と、前記第１のコーデックを用いて前記第１のデータをデコードする第１のデコーダと、前記第２のコーデックを用いて前記第２のデータをデコードする第２のデコーダと、前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択する第２の選択手段と具備する。
【００１９】
本発明では、ネットワークの状況に応じて、第１のコーデック及び第２のコーデックのうち最適なコーデックが送信装置により選択されてエンコードされ、受信装置は、このコーデックに応じたデコーダを選択してデコードする。これにより、受信装置は常に最適な画質及び音質でデータを再生することができる。
【００２０】
本発明に係る通信システムは、第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされたデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する第１の選択手段とを有する送信装置と、前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信する手段と、前記第１のコーデックを用いて前記第１のデータをデコードする第１のデコーダと、前記第２のコーデックを用いて前記第２のデータをデコードする第２のデコーダと、前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択する第２の選択手段と有する受信装置とを具備する。
【００２１】
本発明に係る送信方法は、ネットワークを介して受信装置に接続された送信装置がデータを送信する方法であって、前記ネットワークの状況を監視するステップと、少なくとも前記監視されるネットワークの状況に応じて、第１のコーデックを用いてデータをエンコードする第１のエンコーダ、及び前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダのうちいずれのエンコーダでエンコードするかを選択するステップと、前記選択されたエンコーダでエンコードされた前記データを前記受信装置に送信するステップとを具備する。
【００２２】
本発明に係る受信方法は、第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされた第１及び第２のデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する選択手段とを有する送信装置から、前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信するステップと、前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択するステップとを具備する。
【００２３】
本発明に係る送信プログラムは、ネットワークを介して受信装置に接続された送信装置がデータを送信するプログラムであって、前記送信装置に、前記ネットワークの状況を監視するステップと、少なくとも前記監視されるネットワークの状況に応じて、第１のコーデックを用いてデータをエンコードする第１のエンコーダ、及び前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダのうちいずれのエンコーダでエンコードするかを選択するステップと、前記選択されたエンコーダでエンコードされた前記データを前記受信装置に送信するステップとを実行させる。
【００２４】
本発明に係る受信プログラムは、受信装置に、第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、前記第１及び第２のエンコーダでそれぞれエンコードされた第１及び第２のデータをネットワーク上に送信可能な送信手段と、前記ネットワークの状況を監視する監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記第１及び第２のエンコーダのうちいずれのエンコーダで前記データをエンコードして前記送信手段により送信させるかを選択する選択手段とを有する送信装置から、前記ネットワークを介して送信される前記第１及び第２のデータのうちいずれか一方を受信するステップと、前記第１及び第２のデータのうち受信されるデータに応じて、前記第１及び第２のデコーダのうちいずれのデコーダでデコードするかを選択するステップとを実行させる。
【００２５】
本発明に係るサーバ装置は、第１のコーデックを用いてデータをエンコードする第１のエンコーダと、前記第１のコーデックとは異なる第２のコーデックを用いて前記データをエンコードする第２のエンコーダと、ネットワークを介して接続された複数の受信装置のそれぞれの能力及び設定のうち少なくとも一方の情報を含むステータス情報を、前記各受信装置から前記ネットワークを介して取得する手段と、前記ステータス情報に基づき、前記第１及び第２の受信装置が、前記第１及び第２のコーデックを用いてそれぞれデコードする第１及び第２のデコーダをそれぞれ有することを判別した場合に、前記第１及び第２のデータを前記第１及び第２の受信装置にそれぞれ送信するように制御する手段とを具備する。
【００２６】
本発明では、取得された受信装置ごとのステータス情報に基づき、第１及び第２の受信装置が、第１及び第２のコーデックを用いてそれぞれデコードする第１及び第２のデコーダをそれぞれ有することを判別した場合に、第１及び第２のデータを第１及び第２の受信装置にそれぞれ送信するように制御するので、各受信装置は最適な環境下で通信することができる。本発明は、特に、ＭＣＵに適用することが好ましい。
【００２７】
本発明の一の形態に係るサーバ装置は、前記第１及び第２のエンコーダの両方が使用可能か、前記第１のエンコーダのみが使用可能かを判別する手段をさらに具備し、前記制御手段は、前記第１のエンコーダのみが使用可能と判別された場合であって、前記ステータス情報に基づき前記第２の受信装置が前記第１のデコーダを有すると判別した場合に、前記第１のデータを前記第１及び第２の受信装置に送信するように制御する。例えばサーバ装置の負荷の状況に応じて、あるいは、サーバ装置の能力に応じて、各受信装置が持つコーデックを割り当てることで、サーバ装置の負担を軽減することができる。
【００２８】
本発明の一の形態に係るサーバ装置は、前記ネットワークの状況を監視するネットワーク監視手段と、少なくとも前記監視されるネットワークの状況に応じて、前記データを、前記第１及び第２のエンコーダのうちいずれのエンコーダでエンコードして前記送信手段により送信させるかを選択する手段とをさらに具備する。これにより、ネットワークの状況によらず、各受信装置は常に最適な画質及び音質でデータを受信することができる。
【発明の効果】
【００２９】
以上のように、本発明によれば、ネットワークの状況によらず常に最適な環境で動画や音声等のデータの通信を行うことができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施の形態を図面に基づき説明する。
【００３１】
まず、本発明の一実施形態において前提となるネットワークシステムについて説明する。図１は、この発明のネットワークシステムの一例を示し、ネットワーク９を介して複数の情報処理装置１、２、３、４が接続されたものである。情報処理装置１、２、３、４は、例えば各種のＡＶ（Audio and Visual）機器やポータブル機器等である。
【００３２】
情報処理装置１について示すと、情報処理装置１は、コンピュータ機能部として情報処理コントローラ１１を備える。情報処理コントローラ１１は、メインプロセッサ２１−１、サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５−１及びＤＣ（ディスクコントローラ）２７−１を有する。
【００３３】
メインプロセッサ２１−１は、サブプロセッサ２３−１，２３−２，２３−３によるプログラム実行（データ処理）のスケジュール管理と、情報処理コントローラ１１（情報処理装置１）の全般的な管理とを行う。ただし、メインプロセッサ２１−１内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ２１−１はサブプロセッサとしても機能することになる。メインプロセッサ２１−１は、ＬＳ（ローカルストレージ）２２−１を有する。
【００３４】
サブプロセッサは、１つでもよいが、望ましくは複数とする。本例は、複数の場合である。各サブプロセッサ２３−１，２３−２，２３−３は、メインプロセッサ２１−１の制御によって並列的かつ独立にプログラムを実行し、データを処理する。更に、場合によってメインプロセッサ２１−１内のプログラムがサブプロセッサ２３−１，２３−２，２３−３内のプログラムと連携して動作するように構成することもできる。後述する機能プログラムもメインプロセッサ２１−１内で動作するプログラムである。各サブプロセッサ２３−１，２３−２，２３−３も、ＬＳ（ローカルストレージ）２４−１，２４−２，２４−３を有する。
【００３５】
ＤＭＡＣ２５−１は、情報処理コントローラ１１に接続されたＤＲＡＭ（ダイナミックＲＡＭ）などからなるメインメモリ２６−１に格納されているプログラム及びデータにアクセスするものであり、ＤＣ２７−１は、情報処理コントローラ１１に接続された外部記録部２８−１，２８−２にアクセスするものである。
【００３６】
外部記録部２８−１，２８−２は、固定ディスク（ハードディスク）でも、リムーバブルディスクでもよく、また、ＭＯ，ＣＤ±ＲＷ，ＤＶＤ±ＲＷなどの光ディスク、メモリディスク、ＳＲＡＭ（スタティックＲＡＭ）、ＲＯＭなど、各種のものを用いることができる。したがって、ＤＣ２７−１は、ディスクコントローラと称するが、外部記録部コントローラである。図１の例のように、情報処理コントローラ１１に対して外部記録部２８を複数接続できるように、情報処理コントローラ１１を構成することができる。
【００３７】
メインプロセッサ２１−１、各サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ２５−１及びＤＣ２７−１は、バス２９−１によって接続される。
【００３８】
情報処理コントローラ１１には、当該の情報処理コントローラ１１を備える情報処理装置１を、ネットワーク全体を通して一意的に識別できる識別子が、情報処理装置ＩＤとして割り当てられる。
【００３９】
メインプロセッサ２１−１及び各サブプロセッサ２３−１，２３−２，２３−３に対しても同様に、それぞれを特定できる識別子が、メインプロセッサＩＤ及びサブプロセッサＩＤとして割り当てられる。
【００４０】
情報処理コントローラ１１は、ワンチップＩＣ（集積回路）として構成することが望ましい。他の情報処理装置２、３、４も、上記と同様に構成される。ここで、図１において親番号が同一であるユニットは枝番号が異なっていても、特に断りがない限り同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
【００４１】
上述したように、１つの情報処理コントローラ内の各サブプロセッサ２３は、独立にプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ２６内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ２３からメインメモリ２６へのアクセスは、以下のような手順によって行う。
【００４２】
図２（Ａ）に示すように、メインメモリ２６は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤ及びＬＳアドレス（ローカルストレージアドレス）を含むものとされる。また、各メモリロケーションには、後述のアクセスキーも割り振られる。Ｆ／Ｅビットは、以下のように定義される。
【００４３】
Ｆ／Ｅビット＝０は、サブプロセッサ２３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、Ｆ／Ｅビット＝０は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に１に設定される。
【００４４】
Ｆ／Ｅビット＝１は、当該メモリロケーションのデータがサブプロセッサ２３によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ２３によって読み出された後に０に設定される。また、Ｆ／Ｅビット＝１は、当該メモリロケーションがデータ書き込み不可であることを示す。
【００４５】
更に、上記Ｆ／Ｅビット＝０（読み出し不可／書き込み可）の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。Ｆ／Ｅビット＝０のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ２３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ２３のサブプロセッサＩＤ及びＬＳアドレスを書き込む。
【００４６】
その後、データ書き込み側のサブプロセッサ２３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビット＝１（読み出し可／書き込み不可）に設定されたとき、予め読み出し予約情報として追加セグメントに書き込まれたサブプロセッサＩＤ及びＬＳアドレスに読み出される。
【００４７】
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し／書き込みを制御することによって、前段階の処理を行うサブプロセッサ２３が、処理済みのデータをメインメモリ２６上の所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ２３が前処理後のデータを読み出すことが可能となる。
【００４８】
図２（Ｂ）に示すように、各サブプロセッサ２３内のＬＳ２４も、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含むものとされる。
【００４９】
サブプロセッサ２３がメインメモリ２６内のデータを自身のＬＳ２４のメモリロケーションに読み出すときには、対応するビジービットを１に設定して予約する。ビジービットが１であるメモリロケーションには、他のデータは格納することができない。ＬＳ２４のメモリロケーションに読み出し後、ビジービットは０になり、任意の目的に使用できるようになる。
【００５０】
図２（Ａ）に示すように、更に、各情報処理コントローラと接続されたメインメモリ２６には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ２６内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ２３に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ２３は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。メインメモリ２６は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００５１】
更に、メインメモリ２６の排他的な制御を実現するために、図２（Ｃ）に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のＳＲＡＭ等の比較的高速のメモリに格納され、ＤＭＡＣ２５と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサＩＤ、サブプロセッサキー及びキーマスクが含まれる。
【００５２】
サブプロセッサ２３がメインメモリ２６を使用する際のプロセスは、以下の通りである。まず、サブプロセッサ２３はＤＭＡＣ２５に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、自身のサブプロセッサＩＤと、使用要求先であるメインメモリ２６のアドレスが含まれる。
【００５３】
ＤＭＡＣ２５は、このコマンドを実行する前に、キー管理テーブルを参照して、使用要求元のサブプロセッサのサブプロセッサキーを調べる。次に、ＤＭＡＣ２５は、調べた使用要求元のサブプロセッサキーと、使用要求先であるメインメモリ２６内の図２（Ａ）に示したメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【００５４】
図２（Ｃ）に示したキー管理テーブル上のキーマスクは、その任意のビットが１になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが０または１になることができる。例えば、サブプロセッサキーが１０１０であるとする。通常、このサブプロセッサキーによって１０１０のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが０００１に設定されている場合には、キーマスクのビットが１に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー１０１０によってアクセスキーが１０１０または１０１１のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００５５】
以上のようにして、メインメモリ２６のサンドボックスの排他性が実現される。すなわち、１つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ２６の所定アドレスにアクセスできるようになり、データを保護することができる。
【００５６】
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のプログラムと連携動作するものとする。第１のサブプロセッサにより出力された処理結果データを一旦メインメモリに格納し、第２のサブプロセッサに入力したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的な処理を可能にする。
【００５７】
より具体的には、他の情報処理装置からのデータ→第１のサブプロセッサによる処理→第１のメインメモリ領域→第２のサブプロセッサによる処理→第２のメインメモリ領域、という手順で多段階処理が行われるときには、
第１のサブプロセッサのサブプロセッサキー：０１００、
第１のメインメモリ領域のアクセスキー    ：０１００、
第２のサブプロセッサのサブプロセッサキー：０１０１、
第２のメインメモリ領域のアクセスキー    ：０１０１
というような設定のままだと、第２のサブプロセッサは第１のメインメモリ領域にアクセスすることができない。そこで、第２のサブプロセッサのキーマスクを０００１にすることにより、第２のサブプロセッサによる第１のメインメモリ領域へのアクセスを可能にすることができる。
【００５８】
図１のネットワークシステムでは、情報処理装置１、２、３、４間での分散処理のために、情報処理装置１、２、３、４間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、コマンド、プログラム及びデータを含むソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置に送信することによって、処理を分散することができる。
【００５９】
図３に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、ＤＭＡコマンド、プログラム及びデータによって構成される。
【００６０】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレス及び当該情報処理装置の情報処理装置ＩＤ、更に、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ２１及び各サブプロセッサ２３の識別子（メインプロセッサＩＤ及びサブプロセッサＩＤ）が含まれる。
【００６１】
送信先ＩＤ及び応答先ＩＤには、それぞれ、ソフトウェアセルの送信先である情報処理装置、及びソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
【００６２】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ及び前回のソフトウェアセルＩＤから構成される。
【００６３】
グローバルＩＤは、ネットワーク全体を通して当該ソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ及びソフトウェアセルの作成または送信の日時（日付及び時刻）に基づいて作成される。
【００６４】
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数を設定する。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ２６内及びサブプロセッサ２３のＬＳ２４内のメモリ量を設定する。前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【００６５】
ソフトウェアセルの実行セクションは、ＤＭＡコマンド、プログラム及びデータから構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサ２３によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００６６】
更に、ＤＭＡコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、及びステータス返信コマンドが含まれる。
【００６７】
ロードコマンドは、メインメモリ２６内の情報をサブプロセッサ２３内のＬＳ２４にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサＩＤ及びＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ２６内の所定領域のアドレスを示す。サブプロセッサＩＤ及びＬＳアドレスは、情報のロード先であるサブプロセッサ２３の識別子及びＬＳ２４のアドレスを示す。
【００６８】
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサＩＤ及びプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサ２３を識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
【００６９】
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【００７０】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置の現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置宛に送信要求するコマンドである。機能プログラムについては後述するが、図６に示す情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ２６にロードされ、メインプロセッサ２１により実行される。
【００７１】
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【００７２】
図４に、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
【００７３】
情報処理装置ＩＤは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のＩＤを示す。情報処理装置ＩＤは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１によって、電源投入時の日時、情報処理装置のネットワークアドレス及び情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３の数などに基づいて生成される。
【００７４】
情報処理装置種別ＩＤには、当該情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、ハードディスクレコーダ、ＰＤＡ（Personal Digital Assistants）、ポータブルＣＤ（Compact Disc）プレーヤなどである。また、情報処理装置種別ＩＤは、映像音声記録、映像音声再生など、情報処理装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別ＩＤを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
【００７５】
ＭＳ（マスター／スレーブ）ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスター装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【００７６】
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ２１の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ２１で現在動作している全てのプログラムについての、メインプロセッサ２１での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるＭＩＰＳを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
【００７７】
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ２３の数を表す。サブプロセッサＩＤは、当該の情報処理コントローラ内の各サブプロセッサ２３を識別するための識別子である。
【００７８】
サブプロセッサステータスは、各サブプロセッサ２３の状態を表すものであり、ｕｎｕｓｅｄ，ｒｅｓｅｒｖｅｄ，ｂｕｓｙなどの状態がある。ｕｎｕｓｅｄは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。ｒｅｓｅｒｖｅｄは、現在は使用されていないが、予約されている状態を示す。ｂｕｓｙは、現在使用中であることを示す。
【００７９】
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがｂｕｓｙである場合には、現在の使用率を示し、サブプロセッサステータスがｒｅｓｅｒｖｅｄである場合には、後に使用される予定の推定使用率を示す。
【００８０】
サブプロセッサＩＤ、サブプロセッサステータス及びサブプロセッサ使用率は、１つのサブプロセッサ２３に対して一組設定され、１つの情報処理コントローラ内のサブプロセッサ２３に対応する組数が設定される。
【００８１】
メインメモリ総容量及びメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ２６の総容量及び現在使用中の容量を表す。
【００８２】
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部２８の数を表す。外部記録部ＩＤは、当該の情報処理コントローラに接続されている外部記録部２８を一意的に識別する情報である。外部記録部種別ＩＤは、当該の外部記録部の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。
【００８３】
外部記録部総容量及び外部記録部使用量は、それぞれ、外部記録部ＩＤによって識別される外部記録部２８の総容量及び現在使用中の容量を表す。
【００８４】
外部記録部ＩＤ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量は、１つの外部記録部２８に対して一組設定されるものであり、当該の情報処理コントローラに接続されている外部記録部２８の数の組数だけ設定される。すなわち、１つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部ＩＤが割り当てられ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量も別々に管理される。
【００８５】
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、以上のような構成のソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置及び当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、及び各装置内の情報処理コントローラは、それぞれ、上記の送信元ＩＤ、送信先ＩＤ及び応答先ＩＤによって識別される。
【００８６】
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、そのソフトウェアセルをメインメモリ２６に格納する。更に、送信先のメインプロセッサ２１は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。具体的には、送信先のメインプロセッサ２１は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサＩＤ及びＬＳアドレスで特定されるサブプロセッサ内のＬＳ２４の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
【００８７】
次に、メインプロセッサ２１は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に出力する。指示されたサブプロセッサは、そのキックコマンド及びプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ２６に格納した後、実行を完了したことをメインプロセッサ２１に通知する。
【００８８】
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ２３に限定されるものではなく、メインプロセッサ２１がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
【００８９】
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラム及びそのメインメモリ用プログラムによって処理されるデータを含み、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ２６にメインメモリ用プログラム及びそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムＩＤなどの識別子、及びプログラムカウンタを含み、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ２１に当該メインメモリ用プログラムを実行させる。
【００９０】
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
【００９１】
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
【００９２】
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。更に、各サブプロセッサ間ではＤＭＡ方式によりデータ転送を行い、また上述したサンドボックスを使用することによって、１つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
【００９３】
ソフトウェアセルの使用による分散処理の結果、図５の上段に示すようにネットワーク９に接続されている複数の情報処理装置１、２、３、４は、図５の下段に示すように、仮想的な１台の情報処理装置７として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
【００９４】
図６に、個々の情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部２８に記録されているものである。各プログラムは、機能または特徴によって、制御プログラム、機能プログラム及びデバイスドライバにカテゴライズされる。
【００９５】
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ２１が実行するもので、後述のＭＳ（マスター／スレーブ）マネージャ及び能力交換プログラムを含む。
【００９６】
機能プログラムは、メインプロセッサ２１が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【００９７】
デバイスドライバは、情報処理コントローラ（情報処理装置）の入出力（送受信）用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ毎に情報処理装置に応じたものが備えられる。
【００９８】
情報処理装置が物理的にネットワーク９に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク９に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、制御プログラムに属する各プログラム、及びデバイスドライバに属する各プログラムを、メインメモリ２６にロードする。
【００９９】
ロード手順としては、メインプロセッサ２１は、まず、ＤＣ２７に読み出し命令を実行させることによって、外部記録部２８からプログラムを読み出し、次に、ＤＭＡＣ２５に書き込み命令を実行させることによって、そのプログラムをメインメモリ２６に書き込む。
【０１００】
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
【０１０１】
ここで、機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部２８に記録されている必要はなく、いずれか１つの情報処理装置の外部記録部２８に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図５の下段に示すように、仮想的な１台の情報処理装置７として機能プログラムを実行することができる。
【０１０２】
ここで前述したようにメインプロセッサ２１によって処理される機能プログラムは、サブプロセッサ２３によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこでメインプロセッサ２１が外部記録部２８から機能プログラムを読み出し、メインメモリ２６に書き込む際に対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ２６に書き込むものとする。この場合、連携動作するサブプロセッサプログラムは１個である場合もあるし、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ２６に書き込むことになる。メインメモリ２６に書き込まれたサブプロセッサプログラムはその後、サブプロセッサ２３内のＬＳ２４に書き込まれ、メインプロセッサ２１によって処理される機能プログラムと連携動作する。
【０１０３】
図３のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤとして割り当てられる。機能プログラムＩＤは、機能プログラムの作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【０１０４】
そしてサブプロセッサプログラムにもサブプロセッサプログラムＩＤが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムＩＤは、連携動作する相手となる機能プログラムの機能プログラムＩＤと関連性のある識別子、例えば機能プログラムＩＤを親番号とした上で最後尾に枝番号を付加させたもの等であることもあり得るし、連携動作する相手となる機能プログラムの機能プログラムＩＤとは関連性のない識別子であってもよい。いずれにしても機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムＩＤを自プログラム内に互いに記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは複数個ある全てのサブプロセッサプログラムのサブプロセッサプログラムＩＤを記憶しておくことになる。
【０１０５】
メインプロセッサ２１は、自身が動作する情報処理装置の装置情報（動作状態に関する情報）を格納するための領域をメインメモリ２６に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報である。
【０１０６】
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、マスター／スレーブマネージャ（以下、ＭＳマネージャ）をメインメモリ２６にロードし、実行する。
【０１０７】
ＭＳマネージャは、自身が動作する情報処理装置がネットワーク９に接続されていることを検知すると、同じネットワーク９に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク９に接続されているだけでなく、電気的・機能的にもネットワーク９に接続されていることを示す。また、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
【０１０８】
ＭＳマネージャが同じネットワーク９に接続されている他の情報処理装置の存在を確認する方法を以下に示す。
【０１０９】
ＭＳマネージャは、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤ及び応答先ＩＤが当該情報処理装置で、送信先ＩＤを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信して、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば１０分とされる。
【０１１０】
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先ＩＤで特定されるステータス要求コマンドを発行した情報処理装置に対して、ＤＭＡコマンドがステータス返信コマンドであり、かつデータとして自身（その他装置）の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報（情報処理装置ＩＤ、メインプロセッサに関する情報、サブプロセッサに関する情報など）及び当該他装置のＭＳステータスが含まれる。
【０１１１】
ステータス要求コマンドを発行した情報処理装置のＭＳマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、ＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、当該装置は、スレーブ装置となる。
【０１１２】
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、当該装置は、マスター装置となる。
【０１１３】
すなわち、いずれの装置もネットワーク９に接続されていない状態、またはネットワーク９上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク９上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にスレーブ装置として設定される。
【０１１４】
マスター装置及びスレーブ装置のいずれについても、ＭＳマネージャは、定期的にステータス要求コマンドをネットワーク９上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されることにより、予め判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク９に新たな情報処理装置が接続された場合など、ネットワーク９の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
【０１１５】
メインプロセッサ２１は、ＭＳマネージャから、ネットワーク９上の他装置の照会及び自装置のＭＳステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
【０１１６】
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク９に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。他装置の装置情報の取得は、上述したように、ＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
【０１１７】
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を格納するための領域を自装置のメインメモリ２６に確保し、これら情報を他装置（スレーブ装置）の装置情報テーブルとして記録する。すなわち、マスター装置のメインメモリ２６には、自装置を含むネットワーク９に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
【０１１８】
一方、自装置がスレーブ装置である場合には、能力交換プログラムは、ネットワーク９に接続されている全ての他装置の装置情報、すなわちマスター装置及び自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤ及びＭＳステータスを、自装置のメインメモリ２６に記録する。すなわち、スレーブ装置のメインメモリ２６には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク９に接続されているマスター装置及び各スレーブ装置についての情報処理装置ＩＤ及びＭＳステータスが、別の装置情報テーブルとして記録される。
【０１１９】
また、マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、新たにネットワーク９に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ２６に記録する。
【０１２０】
なお、ＭＳマネージャ及び能力交換プログラムは、メインプロセッサ２１で実行されることに限らず、いずれかのサブプロセッサ２３で実行されてもよい。また、ＭＳマネージャ及び能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０１２１】
マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ２６から削除する。
【０１２２】
更に、このようにネットワーク９から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
【０１２３】
具体的には、例えば、ネットワーク９から切断されていない情報処理装置は、それぞれ、自装置及び他装置の情報処理装置ＩＤを数値に置き換えて、自装置の情報処理装置ＩＤを他装置の情報処理装置ＩＤと比較し、自装置の情報処理装置ＩＤがネットワーク９から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、ＭＳステータスを０に設定し、マスター装置として、上述したように、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を取得して、メインメモリ２６に記録する。
【０１２４】
図５の下段に示したようにネットワーク９に接続されている複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させるためには、マスター装置がユーザの操作及びスレーブ装置の動作状態を把握する必要がある。
【０１２５】
図７に、４台の情報処理装置が仮想的な１台の情報処理装置７として動作する様子を示す。情報処理装置１がマスター装置、情報処理装置２、３、４がスレーブ装置Ａ、Ｂ、Ｃとして、動作しているものとする。
【０１２６】
ユーザがネットワーク９に接続されている情報処理装置を操作した場合、操作対象がマスター装置１であれば、その操作情報は、マスター装置１において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置１に送信される。すなわち、ユーザの操作対象がマスター装置１とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置１において把握される。操作情報の送信は、例えば、ＤＭＡコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
【０１２７】
そして、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、上記の方法によって自装置の外部記録部２８−１、２８−２からメインメモリ２６−１に機能プログラムをロードするが、他の情報処理装置（スレーブ装置）がマスター装置１に機能プログラムを送信してもよい。
【０１２８】
機能プログラムには、その実行単位毎に必要となる、図４に示した各情報として表される情報処理装置種別ＩＤ、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件等の、装置に関する要求スペックが規定されている。
【０１２９】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、予め能力交換プログラムによってメインメモリ２６−１に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリ及び外部記録部に関する情報である。
【０１３０】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ネットワーク９上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
【０１３１】
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。更に、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から１つの実行要求候補装置を特定して選択する。
【０１３２】
実行要求するスレーブ装置が特定されたら、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ１１に含まれるメインメモリ２６−１に記録されている当該スレーブ装置の装置情報テーブルを更新する。
【０１３３】
更に、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ＤＭＡコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、機能プログラムに関する必要なサブプロセッサの情報及びサンドボックスサイズ（図３参照）を設定して、上記実行要求されるスレーブ装置に対して送信する。
【０１３４】
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、上記の方法によって自装置の外部記録部２８からメインメモリ２６に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
【０１３５】
機能プログラムの実行を要求されたスレーブ装置の外部記録部２８に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
【０１３６】
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
【０１３７】
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、終了通知をマスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
【０１３８】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、自装置及び他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置１が当該機能プログラムを実行する。
【０１３９】
図７の例で、ユーザがスレーブ装置Ａ（情報処理装置２）を操作し、当該操作に応じた機能プログラムを別のスレーブ装置Ｂ（情報処理装置３）が実行する場合について、図８を用いてその分散処理の例を説明する。
【０１４０】
図８の例では、ユーザがスレーブ装置Ａを操作することによって、スレーブ装置Ａを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Ａは、ステップ８１で、その操作情報をマスター装置１に送信する。
【０１４１】
マスター装置１は、ステップ７２で、その操作情報を受信し、更にステップ７３に進んで、自装置のメインメモリ２６−１に記録されている自装置及び他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Ｂが選択される場合である。
【０１４２】
次に、マスター装置１は、ステップ７４で、その選択したスレーブ装置Ｂに対して機能プログラムの実行を要求する。
【０１４３】
スレーブ装置Ｂは、ステップ９５で、その実行要求を受信し、更にステップ９６に進んで、実行要求された機能プログラムを実行する。
【０１４４】
以上のように、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させることができる。
【０１４５】
次に、以上のようなネットワークシステムを前提に、本発明の実施の形態について説明する。
【０１４６】
図９は、本発明の一実施の形態に係る通信システムの構成を示すブロック図である。通信システム３００は、例えば送信装置１００と受信装置２００とがネットワーク５０を介して接続されている。ネットワーク５０は、例えばインターネットまたはＬＡＮ（Local Area Network）等で構成される。
【０１４７】
例えば、送信装置１００及び受信装置２００は、それぞれ上記情報処理装置１等の機能を少なくとも備え、ネットワーク５０を介して互いに接続されている。通信システム３００は、例えば遠隔テレビ会議、インターネット電話、ビデオストリーム配信、ディジタル放送等のシステムを実現するものである。具体的には、本システムがビデオストリーム配信等のシステムであれば、送信装置１００は、例えばビデオストリームの配信装置であり、受信装置２００は、ユーザが利用する受信端末装置である。あるいは、ネットワーク５０が例えば家庭内のＬＡＮである場合には、送信装置１００がＷＡＮ（Wide Area Network）に接続されたホームサーバであり、受信装置２００がそのホームサーバから動画や音声等の提供を受ける端末装置である。
【０１４８】
送信装置１００には、例えばカメラ１２ａ及びマイクロフォン１２ｂ等でなる画像及び音声の入力部１２が接続されている。送信装置１００は、この入力部１２から入力されたデータを取り込む。一方、受信装置２００には、例えばモニタ１３ａ及びスピーカ等でなる出力部１３が接続されている。受信装置２００は、送信装置１００から受信したデータを出力部１３を介して映像や音声を出力する。
【０１４９】
送信装置１００は、システム制御部３１、複数の（例えば３つの）エンコーダ３９ａ、３９ｂ、３９ｃ、パケット生成部３２、パケット解析部３３、ネットワーク監視部３４、ＲＴＣＰ（RTP Control Protocol）パケット生成部３５、時刻生成部３６、ＲＴＰ（Real Time Transport Protocol）出力ポート３７、ＲＴＣＰポート３８、ＴＣＰ（Transmission Control Protocol）ポート４０を有する。
【０１５０】
ここで、「パケット」とは、上述した「ソフトウェアセル」（図３参照）と同じ概念であり、以下、「パケット」を「ソフトウェアセル」と置き換えて読んでもかまわない。あるいは、いくつかパケットの集まりがソフトウェアセルを構成するようにしてもよい。
【０１５１】
システム制御部３１は、送信装置１００を全体的に統括して制御し、例えば上記メインプロセッサ２１−１（図１に示す情報処理装置１が持つ）が、主にこのシステム制御部３１の機能を果たす。
【０１５２】
第１のエンコーダ３９ａ、第２のエンコーダ３９ｂ及び第３のエンコーダ３９ｃは、入力部１２から入力されたデータをそれぞれ異なるコーデックを用いて圧縮符合化する。具体的には、図１０に示すように、第１のエンコーダ３９ａは第１のコーデック１５ａを用い、第２のエンコーダ３９ｂは第２のコーデック１５ｂを用い、第３のエンコーダ３９ｃは第３のコーデック１５ｃを用いる。送信装置１００が図１に示す情報処理装置１であるなら、これらのエンコーダ３９ａ、３９ｂ及び３９ｃとしては、サブプロセッサ２３−１、２３−２、２３−３等がそれぞれ割り当てられる。これらのサブプロセッサは例えばＤＳＰ（Digital Signal Processor）等が用いられる。システム制御部３１は、ネットワークの状況や送信装置１００の負荷の状況等に応じて、コーデックの上記割り当てを制御するようにしてもよい。具体的には、例えば３つのサブプロセッサ２３−１、２３−２、２３−３を用いて１つのコーデックを用いるようにすることもできる。また、ここで言うコーデックが、上述したサブプロセッサプログラム、あるいは機能プログラムに相当する。
【０１５３】
第１、第２及び第３のコーデック１５ａ、１５ｂ及び１５ｃは、上記のようにそれぞれ異なるコーデックである。ここで、異なるコーデックとは、例えば、ＭＰＥＧ（Moving Picture Experts Group）、ＷＭＶ（Windows（登録商標） Media Video）、またはH.261等の規格や形式が同じであても、アルゴリズム、プログラム、またはそのプログラムのバージョン等が異なる場合は、異なるコーデックと言う。オーディオコーデックについても同様である。
【０１５４】
パケット生成部３２は、映像や音声等のメディアデータをペイロードとした、ＲＴＰに従うメディアパケットを生成する。つまり、ペイロードデータに対して、ＲＴＰヘッダを付加しパケット化する。パケット生成部３２で生成されるメディアパケットは、複数の連続性を持つパケットである。このような連続性を持つメディアパケットを用いてネットワーク５０でのデータの伝送遅延時間をすることができる。また、パケット生成部３２は、例えば受信装置２００と能力交換したりするためのＴＣＰパケットを生成する。
【０１５５】
ＲＴＣＰパケット生成部３５は、例えば、後述する所定の条件の下で、受信装置２００にネットワーク５０でのデータ伝送遅延時間を計測させるためのＲＴＣＰに従うEcho-Replyパケットを生成する。ＲＴＣＰパケット生成部３５は、他にも、例えばＥＯＳ（End Of Stream）メッセージを持つＲＴＣＰパケットを生成し、そのパケットを受信装置２００へ送ることで、データストリームの終了を明示する。
【０１５６】
パケット解析部３３は、パケットの種別や、パケットに含まれるデータの解析を行う。
【０１５７】
時刻生成部３６は、システム制御部３１の基準クロックを生成し、生成されたクロックを基にパケット生成部３２及びＲＴＣＰパケット生成部３５にタイムスタンプを与える。
【０１５８】
ＴＣＰポート４０は、ネットワーク５０を介してＴＣＰに従った通信を行うための入出力ポートである。具体的には、ＴＣＰポート４０は、少なくとも送信装置１００と受信装置２００との能力交換時にステータス情報のやり取りするためのポートとして機能する。
【０１５９】
ネットワーク監視部３４は、例えば、ネットワーク５０の負荷状況や遅延状況を取得する。具体的には、受信装置２００が計測したパケットロス率や遅延時間の情報を、ネットワーク５０を介して受信装置２００から取得する。また、ネットワーク監視部３４は、受信装置２００の能力情報や設定情報等が含まれたステータス情報を取得する。
【０１６０】
上記ＲＴＰパケットの構成を図１２に示す。ＲＴＰヘッダには、バージョン番号（ｖ）、パディング（Ｐ）、拡張ヘッダ（Ｘ）の有無、送信元数（Counter）、マーカ情報（marker bit）、ペイロードタイプ（Payload type）、シーケンス番号、タイムスタンプ、同期ソース（送信元）識別子（ＳＳＲＣ）及び貢献ソース（送信元）識別子（ＣＳＲＣ）の各フィールドが設けられている。ソフトウェアセルの場合、シーケンス番号が図３に示すソフトウェアセルのＩＤ（グローバルＩＤ）となる。データ受信側において、ＲＴＰヘッダに付与されたタイムスタンプによりＲＴＰパケットの展開時に処理時間の制御が実行され、リアルタイム画像、または音声の再生制御が可能となる。例えば動画像データの符号化データを格納したＲＴＰパケットにおいては、１つの画像フレームに属する複数のＲＴＰパケットに共通のタイムスタンプが設定され、各フレームを構成する終端パケットには、終端であることを示す識別フラグがＲＴＰヘッダに格納される。ＲＴＰヘッダを付加されたパケットは、さらに例えばＵＤＰ（User Datagram Protocol）ヘッダやＩＰ（Internet Protocol）ヘッダが付与されてネットワーク５０上で通信される。この場合、例えば、このようなＵＤＰヘッダやＩＰヘッダが付加されたパケットが上述のソフトウェアセルとなる。
【０１６１】
受信装置２００は、ＲＴＰ入力ポート５１、パケット解析部５２、パケット処理部５３、ＲＴＣＰポート５４、ネットワーク監視部５５、遅延計測部５６、データベース５７、システム制御部５８、複数の（例えば３つの）デコーダ５９ａ、５９ｂ、５９ｃ、ＴＣＰポート６０を有する。
【０１６２】
システム制御部５８は、受信装置２００を全体的に統括して制御し、例えば上記メインプロセッサ２１−２（図１に示す情報処理装置２が持つ）が、主にこのシステム制御部３１の機能を果たす。
【０１６３】
パケット解析部５２は、ＲＴＰ入力ポートから入力されるＲＴＰパケット（例えばメディアパケット）を解析し、また、ＲＴＣＰポート５４で入出力されるＲＴＣＰパケットを解析する。具体的には、各層ごとのＩＰヘッダやＲＴＰヘッダ等が取り除かれ、パケットの種別等、パケットに含まれるデータの解析を行う。
【０１６４】
パケット処理部５３は、パケット解析部５２から取得されたパケットのデータを処理して、第１、第２、第３のエンコーダ５９ａ、５９ｂ、５９ｃに渡したり、ＲＴＣＰに従う遅延計測用のEchoパケットを生成したりする。また、パケット処理部５３は、後述するように、ネットワーク監視部５５により、送信装置１００から送信されるパケットのロスまたはエラーが検出された場合に、そのロスまたはエラーとなったパケット再送要求を実行するか否かを判断する（ＡＲＱ（Auto Repeat reQuest））。パケット再送要求を実行する場合、パケット処理部５３は、パケット解析部５２で検出されたロストパケットの再送を、送信装置１００に実行させるためのデータを格納した再送要求パケットを生成する。パケット処理部５３は、他にも、ある連続する所定数のパケットを無事受信したときの受信確認応答パケットを生成したりする。
【０１６５】
ネットワーク監視部５５は、例えばネットワーク５０の負荷状況を取得したり、送信装置１００の能力や設定情報を含むステータス情報を、ネットワーク５０を介して取得したりする。
【０１６６】
遅延計測部５６は、ＲＴＰパケットまたはＲＴＣＰパケットに基づき、ネットワーク５０でのデータの往復伝送遅延時間（ＲＴＴ）または片道伝送遅延時間を計測し、データベース５７に計測したデータを保存する。受信装置２００が図１に示す情報処理装置２であるなら、データベース５７は、例えばメインメモリ２６−２、外部記録部２８−３等に相当する。
【０１６７】
第１のデコーダ５９ａ、第２のデコーダ５９ｂ及び第３のデコーダ５９ｃは、パケット処理部５３で処理されたデータを、それぞれ異なるコーデックを用いて復号し、出力部１３に出力する。具体的には、図１１に示すように、第１のデコーダ５９ａは上記第１のコーデック１５ａを用い、第２のデコーダ５９ｂは第２のコーデック１５ｂを用い、第３のデコーダ５９ｃは第３のコーデック１５ｃを用いる。送信装置１００で説明した場合と同様に、受信装置２００が図１に示す情報処理装置２であるなら、これらのデコーダ５９ａ、５９ｂ及び５９ｃとしては、例えばサブプロセッサ２３−４、２３−５、２３−６等（図１参照）がそれぞれ割り当てられ、システム制御部５８は、コーデックの割り当てを可変に制御することもできる。
【０１６８】
図１３は、ＲＴＣＰに従うEchoパケットの構成を示し、図１４はEcho-Replyパケットの構成を示している。Echoパケットは、図１３に示すようにヘッダ（ＨＥＡＤ）、フォーマット（ＦＯＲＭＡＴ）、パケットタイプ、パケット長、送信同期ソース識別子（ＲＴＣＰ）、およびEchoパケットの識別データとしてのＥＣＨＯ−ＩＤが格納される。Echo-Replyパケットは、図１４に示すようにヘッダ（ＨＥＡＤ）、フォーマット（ＦＯＲＭＡＴ）、パケットタイプ、パケット長、送信同期ソース識別子（ＲＴＣＰ）、およびＥＣＨＯ−ＲＴＣＰパケットに対応するＥＣＨＯ−ＩＤ及び機器処理時間（後述する装置処理時間による遅延）が格納される。ＥＣＨＯ−ＩＤをEchoパケットとEcho-Replyパケットに入れることにより、送信装置１００がEcho-Replyパケットを受け取った際に、いつ送信したEchoパケットに対応する返事（Echo-Reply）かを識別することが可能となる。
【０１６９】
以上説明した送信装置１００及び受信装置２００は、互いに相手方の機能をすべて含むようにしてもよい。また、ステータス情報はＴＣＰで実行するようにしたが、他のプロトコル、例えばＲＴＰであってもよい。
【０１７０】
以上のように構成された通信システム３００の動作について説明する。図１５は、その動作を示すフローチャートである。
【０１７１】
送信装置１００は、上述した能力交換プログラムを用いてネットワーク５０に接続された受信装置２００のステータス情報を取得する（ステップ１５０１）。具体的には、送信装置１００は、応答先ＩＤ（図３参照）である送信装置１００の機器ＩＤ及び送信先ＩＤである受信装置２００の機器ＩＤを含むステータス要求コマンドのＴＣＰパケットをパケット生成部３２で生成し、受信装置２００に送信して実行させる。ステータス要求コマンドのＴＣＰパケットを受信した受信装置２００はステータス返信コマンドのＴＣＰパケットをパケット処理部５３で生成して、自己のステータス情報を送信装置１００に送信する。
【０１７２】
また、逆に、受信装置２００がステータス要求コマンドを発行し、これに応じて送信装置１００は、自己のステータス情報を受信装置２００に送信する場合もある。
【０１７３】
図１６は、例えば受信装置２００が生成する当該ステータス返信コマンドのパケットのデータ領域の構造を示す。ここでは、図４に示したデータに、「パケットロス率」、「往復伝送遅延時間（ＲＴＴ）」及び「コーデック情報」等がさらに加えられている。
【０１７４】
パケットロス率とは、送信装置１００から送信されるパケットの数のうち、例えばある一定時間内においてネットワーク５０上で喪失したパケット数の割合である。各パケットにはシーケンシャルな番号（例えば図１２参照）が付加されているため、受信装置２００はこの番号より喪失したパケットを認識することができる。
【０１７５】
パケットロスには、大きく分けてランダムロス及びバーストロスの２種類がある。ランダムロスは、例えば送信装置１００、受信装置２００、またはネットワーク５０中のノード（ルータ等）の性能によって機器ごとに発生するものであり、数パーセント程度である。一方、バーストロスは、ネットワークが輻輳（混雑）等することにより帯域が圧迫されて発生するものであり、ある短時間で見ると、例えば１０〜３０パーセントに達することもある。受信装置２００は、このようなパケットロス率を例えば定期的に送信装置１００に送ることで、送信装置１００は、ネットワーク監視部３４により、そのロス率を把握し、現在ランダムロスが発生しているのか、バーストロスが発生しているのかを判別することができる。
【０１７６】
ＲＴＴとは、受信装置２００がＲＴＣＰのEchoパケットを送信してから、送信装置１００がこのEchoパケットを受信するとともにEcho-Replyパケットを生成して受信装置２００に送信し、受信装置２００がこのEcho-Replyパケットを受信するまでの時間である。
【０１７７】
コーデック情報とは、例えば上述したコーデックの種類のほか、ビットレートの情報等の情報も含む。この送信装置１００と受信装置２００との接続が確立された初期状態に、第１回目に送信されるステータス情報に含まれるコーデック情報は、ユーザが受信装置２００に対して設定したコーデック情報となる。
【０１７８】
その他の設定情報とは、例えば映像の画質、音質、ネットワークの帯域等のうちどれを優先させるか等の設定情報であり、これは上記第１回目のステータス情報で送信されるユーザの設定情報である。したがって、その後ユーザが改めて設定しない限り、その他の設定情報は２回目以降は送信されない。
【０１７９】
このようなステータス情報を送信装置１００が受信装置２００から取得することにより、送信装置１００は、受信装置２００の能力及び設定情報、つまり、図１６で示す各種の情報を把握することができる。ステータス情報は定期的に、例えば１００ｍｓあるいはそれより長い時間ごとに送受信される。なお、上記接続確立後の第１回目のステータス情報の送受信においては、受信装置２００のステータス情報中にはパケットロス率は含まれない。これは、受信装置２００は、送信装置１００からのパケットを未だ受信していないからである。
【０１８０】
図１５のフローに戻り、送信装置１００がステータス情報を取得すると、送信装置１００は、初期状態では、そのステータス情報を基に最適な通信モードを選択する（ステップ１５０２）。ここでいう最適な通信モードとは、現在の送信装置１００の能力や負荷の状況に応じて、使用するプロセッサ、そのプロセッサの数、またはメモリ等を、できるだけ利用して、そのステータス情報に含まれる受信装置２００が要求するコーデックやビットレート等を満たすように動作する。現在の送信装置１００の能力や負荷の状況とは、例えばメインプロセッサ、サブプロセッサの使用率、メモリ等の残量等の状況である。つまり、初期状態では、送信装置１００はネットワークの状況を認識できていないので、送信装置１００の能力の状況を認識して通信しようとする。
【０１８１】
図１７（ａ）に、受信装置２００のステータス情報のうち、ユーザにより設定されたコーデック情報及びその他の設定情報を示す。この例は、受信装置２００が動画を受信する例である。例えば、受信装置２００が第１のコーデック１５ａを用い、設定されたビットレートが最大８．０Ｍｂｐｓ、優先するパラメータが画質であるとする。すると、送信装置１００は、それに対応するように第１のコーデック１５ａを用いて、つまり第１のエンコーダ３９ａを用いてデータをエンコードし受信装置１００に送信を開始する。このとき、送信装置１００は、第１のエンコーダに適応するビットレートである最大８．０のビットレートでデータをエンコードする。すなわち、上述したように送信装置１００は、自己の負荷状況を判断しながら複数のサブプロセッサ２３を用い、できるだけ図１７（ａ）に示す受信装置２００の要求を満たすように動作する（ステップ１５０３）。
【０１８２】
データの送信途中において、送信装置１００及び受信装置２００は、それぞれのネットワーク監視部３４及び５５によりネットワーク５０の状況を監視する（ステップ１５０４）。例えば、送信装置１００は、受信装置２００から新たなステータス情報を取得して更新するとともに、ＲＴＣＰパケットを生成して受信装置２００に送信する。受信装置２００も、送信装置１００の動作に対応するように、パケットロス率の計測をしたり、ＲＴＣＰパケットを生成して送信装置１００に送信したりする。ＲＴＣＰパケットを用いるのは、ＡＲＱシステムにより、喪失したパケットを再送したり、後述するように伝送遅延時間を計測したりするためである。ステータス情報の更新や、伝送遅延時間の計測は定期的に、例えば数秒〜数十秒ごと、あるいは数分ごとに行われるが、これらに限定されるものではない。
【０１８３】
そして、送信装置１００及び受信装置２００は、この取得するステータス情報に基づき、あるいは、受信装置２００により計測された伝送遅延時間に基づきコーデックを再設定したり、ビットレートを再設定して通信を行う（ステップ１５０５）。
【０１８４】
図１８は、上記ステップ１５０４、１５０５における受信装置２００の動作例を示すフローチャートである。受信装置２００は、ネットワーク監視部５５によりネットワーク５０を監視するための１つのパラメータとしてステータス情報に入れるパケットロス率を算出する（ステップ１８０１）。ネットワーク監視部５５は、パケットロス率を算出すると、そのロス率が例えば１０パーセント未満であればランダムロスが発生していると判断する（ステップ１８０２のＮＯ）。一方、ロス率が１０パーセント以上で、これが数回（例えば３〜５回）連続して算出された場合にバーストロスが発生していると判断する（ステップ１８０２のＹＥＳ）。
【０１８５】
ランダムロスの場合には、システム制御部３１は、ＡＲＱシステムにより喪失したパケットの再送要求を行うように制御する（ステップ１８０３）。ＡＲＱのアルゴリズムは、一般的なものでもよい。ランダムロスが発生している場合、ネットワーク５０の帯域はバーストロスが発生しているときほど圧迫されてはいないため、このように再送要求しても問題ない。
【０１８６】
一方、ネットワーク監視部５５によりバーストロスが発生していると判断された場合には、システム制御部３１は、図１７（ｂ）に示すように、例えば１．５Ｍｂｐｓのビットレートに対応する第２のコーデック１５ｂに切り替えるように制御する。これは、第１のコーデックで用いたものより低いビットレートである。具体的には、受信装置２００は、ステップ１８０２のＹＥＳの後、ステータス情報中のコーデック情報を「第２のコーデック」に書き換えて送信装置１００にこのステータス情報を送信する（ステップ１８０４）。
【０１８７】
図１９は、上記ステップ１８０４の後の送信装置１００の動作を示すフローチャートである。送信装置１００は、受信装置２００から送信されたステータス情報を受信する（ステップ１９０１）。そうすると、送信装置１００は、そのステータス情報を読み出し、更新された部分であるコーデックを、第１のコーデック１５ａから第２のコーデック１５ｂに切り替える（ステップ１９０２）。この後、送信装置１００は切り替えた第２のコーデック１５ｂでデータをエンコードして、受信装置２００に送信する（ステップ１９０３）。この後、受信装置２００は送信されるデータを受信して第２のデコーダ５９ｂでデコードして再生する。
【０１８８】
以上のように、本実施の形態では、時間帯や接続相手である受信装置２００によって変化するネットワークの状況に応じて、第１、第２及び第３のコーデック３９ａ、３９ｂ及び３９ｃのうち最適なコーデックを選択するので、受信装置２００は常に最適な画質及び音質でデータを受信することができる。従来では、ビットレートを可変して通信することはあったが、受信装置のデコード時に高ビットレート用のコーデックを用いていてもフレームレートが低下してしまい、ぎこちない通信になっていた。しかし、本実施の形態によれば、コーデックごと可変するのでスムーズに通信することができる。
【０１８９】
また、例えば高ビットレート用のコーデックから低ビットレート用のコーデックに切り替えることにより、プロセッサの負荷を軽減することができる。特に、図１〜図８で説明した連携動作するコンピュータシステムを採用する場合、ネットワーク５０が輻輳するときにはプロセッサを複数用いている場合が多く、装置負荷が大きくなっている可能性がある。したがって、ネットワークの状況に応じてプロセッサの負荷を軽減できれば非常に有効である。
【０１９０】
さらに、コーデックが複数ある場合に１つのプロセッサによって動作させようとすると、負荷の変動、予期しない動作等の問題が発生し、複雑な状況を考慮する必要がある。しかしながら、本実施の形態のようにプロセッサを複数利用することで、割り当てる処理を単純化させることができる。
【０１９１】
なお、パケットロスが発生していない場合は、送信装置１００及び受信装置２００は、最初に設定されたコーデックやビットレートで通信を続ける。また、バーストロスのロス率がさらに大きい場合には、さらに低ビットレート用の第３のコーデック１５ｃに切り替えるようにすればよい。そして、その後ロス率が所定値より低くなった場合は、第３のコーデックより高ビットレート対応の第１または第２のコーデックに切り替えることができる。
【０１９２】
図１８で説明した処理のうち、ステップ１８０１及び１８０２の処理は、送信装置１００が実行するようにしてもよい。この場合、送信装置１００は、ステップ１８０２のＹＥＳの後、ステップ１９０２以降の処理を実行し、受信装置２００は切り替えられた後のコーデックでデコードする。
【０１９３】
さらに、受信装置２００は、ステータス情報においてパケットロス率の情報ではなく、ランダムロスかバーストロスかの情報のみを送信装置１００に送るようにしてもよい。
【０１９４】
次に、往復伝送遅延時間（ＲＴＴ）について説明する。
【０１９５】
受信装置２００は、定期的、あるいは任意のタイミングで、例えば往復伝送遅延時間（ＲＴＴ）を算出する。図２０は、Echoパケットの送信処理フローである。Echo-Replyパケットの送信は、受信装置２００が定期的、あるいは任意タイミングで能動的に実行することが可能である。ステップ２００１における、ＲＴＣＰパケットの送信待機状態において、ＲＴＴの計測要請が発生した場合、ステップ２００２のEchoパケットの生成処理に移行する。ステップ２００２で生成するEchoパケットは、先に図１３を参照して説明した構成を有する。パケットには、各パケット固有の識別子としてのＥＣＨＯ−ＩＤが設定される。ステップ２００３で、生成したEchoパケットが、ＲＴＣＰポート３８を介して、送信装置１００に送信される。ステップ２００４では、Echoパケットを送信した送信時間及びパケットに設定されたＥＣＨＯ−ＩＤがデータベース５７に記録される。
【０１９６】
図２１は、Echo-Replyパケットの受信およびＲＴＴ算出処理フローである。ステップ２１０１における、ＲＴＣＰパケットの受信待機状態において、Echo-Replyパケットが受信されたと判定されると（ステップ２１０２でＹＥＳ）、ステップ２１０３において、Echo-Replyパケットの受信時刻がデータベース５７に記録される。受信するEcho-Replyパケットは、先に図１４を参照して説明した構成を有する。パケットには、応答対象となった対応するEchoパケットと同一の識別子としてのＥＣＨＯ−ＩＤが設定され、さらに、送信装置１００において算出した装置処理時間が格納される。装置処理時間とは、送信装置１００が、Echoパケットを受信した時刻からEcho-Replyパケットを送信するまでの時刻である。
【０１９７】
ステップ２１０４では、受信したEcho-Replyパケットから装置処理時間が抽出され、ステップ２１０５において、受信したEcho-Replyパケットに設定されたＥＣＨＯ−ＩＤから対応するEchoパケットの送信時間が検索される。
【０１９８】
ステップ２１０６では、ステップ２１０３において取得したEcho-Replyパケットの受信時刻、ステップ２１０４において取得した装置処理時間、ステップ２１０３において取得したEchoパケットの送信時間に基づいて、ＲＴＴの算出処理が実行される。ＲＴＴの算出は、下記の式（１）に基づいて実行される。  
ＲＴＴ＝(Echo-Replyパケット受信時刻)−(Echoパケット送信時刻)−(装置処理時間)・・・式（１）。
【０１９９】
以上の式で算出されたＲＴＴは、図１６に示したように、ステータス情報として受信装置２００が送信装置１００に送信する。これにより、送信装置１００は、ネットワーク監視部３４によりこのＲＴＴを参照してネットワークの状況を把握することができる。例えば、ＲＴＴが比較的大きい場合にはネットワーク５０でパケットのバーストロスが起こっている可能性が高い。例えば１０ｍｓ〜３０ｍｓであったＲＴＴが１００ｍｓを超える事態が発生した場合には、ネットワーク５０でバーストロスがこれから起こるか、バーストロスが現在起こっている状態にある。したがって、ＲＴＴが計測されることで、受信装置２００は、図１８で示したステップ１８０２以降の処理を実行することができ、その後、送信装置１００は図１９で示した処理を実行することができる。
【０２００】
以上の説明では、ＲＴＴを用いる場合を説明したが、ＲＴＴに代えて、またはＲＴＴに加えて、ネットワーク５０の片道の伝送遅延時間を送信装置１００または受信装置２００が計測するようにしてもよい。具体的には、受信装置２００が算出する場合、下記の式（２）より算出される。  
片道遅延＝（受信装置のパケットの受信間隔）−（送信装置のパケットの送信間隔）・・・式（２）。
【０２０１】
図２２は、本発明の他の実施の形態に係る通信システムの構成を示す図である。
【０２０２】
この通信システムは、例えばテレビ会議等を実現するためのシステムである。この通信システムは、ＭＣＵが搭載されたＭＣＵサーバ４００と、このＭＣＵサーバ４００にネットワーク５０を介して接続される複数の端末装置５００ａ、５００ｂ、５００ｃ、５００ｄとで構成される。ＭＣＵサーバ４００（以下、単にサーバと言う。）は、基本的には図９で示した送信装置１００の構成を有している。各端末装置５００ａ〜５００ｄは、基本的には図９で示した受信装置２００の構成を有しており、各端末装置５００ａ〜５００ｄには図９で示した、カメラ１２ａ等を有する入力部１２及びモニタ１３ａ等を有する出力部１３が接続されている。
【０２０３】
サーバ４００は、その他にも、例えば各端末装置５００ａ〜５００ｄから受信した各画像を受信して１つの画面に表すために各画像を合成処理する図示しない画像合成処理部等を有している。これにより、サーバ４００は、合成された画像を各端末装置５００ａ〜５００ｄにマルチキャスト等で配信することができる。本例の場合、端末装置は４つあるので、例えば１つの画面が４等分された形で１つの画像として配信される。なお、この通信システムを図１〜図８で示したネットワークシステムに例えると、サーバ４００はマスター装置になり、各端末装置５００ａ〜５００ｄはスレーブ装置に相当する。
【０２０４】
図２３は、本実施の形態の前提として、サーバ４００、各端末装置５００ａ〜５００ｄがそれぞれ有するコーデックを示したものである。図に示すように、サーバ４００は、第１〜第３のコーデック１５ａ〜１５ｃを有するものとする。端末装置５００ａは第１のコーデック１５ａ及び第３のコーデック１５ｃを有し、端末装置５００ｂも同様に第１のコーデック１５ａ及び第３のコーデック１５ｃを有するものとする。端末装置５００ｃは第２のコーデック１５ｂ及び第３のコーデック１５ｃを有し、端末装置５００ｄは第３のコーデック１５ｃ及び第４のコーデック１５ｄを有するものとする。第４のコーデック１５ｄは、第１、第２及び第３のコーデックとは異なるものである。
【０２０５】
サーバ４００は、第１〜第３のコーデック１５ａ〜１５ｃを利用する３つのエンコーダ（３つのサブプロセッサ）３９ａ〜３９ｃを備えるものとする（図９参照）。
【０２０６】
以下、この通信システムの動作を説明する。図２４は、この通信システムでサーバ４００と各端末装置５００ａ〜５００ｄとの接続が確認されるまでの動作を示すフローチャートである。
【０２０７】
最初にサーバ４００のみがネットワーク５０に接続されている状態では、サーバ４００は、各端末装置５００ａ〜５００ｄの接続要求待ち状態にある（ステップ２４０１）。ネットワーク５０に各端末装置５００ａ〜５００ｄがそれぞれ接続されると（ステップ２４０２）、サーバ４００及び各端末装置５００ａ〜５００ｄは、上述したようにステータス情報を交換し合う（ステップ２４０３）。ここで各端末装置５００ａ〜５００ｄからサーバ４００交換されるステータス情報は、例えば図１６で示す内容のデータである。
【０２０８】
サーバ４００は、接続されている端末装置の数を確認し、複数の場合はステップ２４０５に進む（ステップ２４０４のＹＥＳ）。本実施の形態では、４つの端末装置が接続されているのでステップ２４０５に進む。確認される端末装置が１つの場合は、サーバ４００と１つの端末装置とで一対一の接続を開始し、パケットをやり取りする（ステップ２４０６）。ステップ２４０６は、図１５で説明したようなフローで処理することができる。
【０２０９】
ステップ２４０５で、サーバ４００は、ＭＣＵに対応する端末装置があるか否かを確認し、なければ接続エラーとなる（ステップ２４０７）。ＭＣＵに対応する端末装置があれば、サーバ４００は、多地点接続を開始する（ステップ２４０８）。本実施の形態では、４つの端末装置５００ａ〜５００ｄがすべてＭＣＵに対応する端末装置として説明する。
【０２１０】
図２５は、上記ステップ２４０８以降のサーバ４００の動作を示すフローチャートである。
【０２１１】
サーバ４００は、各端末装置５００ａ〜５００ｄから受信したステータス情報に基づき、各端末装置５００ａ〜５００ｄのうち少なくも２つがそれぞれ異なるコーデックを用いるか、そうでないかを判別する（ステップ２５０１）。各端末装置５００ａ〜５００ｄのすべての端末装置が、ユーザにより初期設定されたコーデックがそれぞれ共通するコーデックである、例えば第３のコーデック１５ｃを用いる場合は（ステップ２５０１のＮＯ）、ステップ２５０３に進む。そうでない場合、一例として図２６に示すように端末装置５００ａ、５００ｂがそれぞれ第１のコーデック１５ａ、端末装置５００ｃが第２のコーデック１５ｂ、端末装置５００ｄが第３のコーデック１５ｃを用いる場合は、サーバ４００は、ステップ２５０２に進む。
【０２１２】
ステップ２５０２では、サーバ４００がコーデックごとに当該サーバ４００が持つ複数のプロセッサ（ＣＰＵ）の割り当てが可能かどうか、すなわち、コーデックごとに当該サーバ４００が持つ複数のプロセッサを全て用いる余裕があるかどうかを確認する。このように確認を取るのは、端末装置の数が多く、かつ、これらの端末装置がそれぞれが異なるコーデックを用いる場合、たとえサーバ４００がそれらの分のコーデックを多数持っていても、プロセッサの数がそのコーデックの数に満たない場合は、コーデックごとにプロセッサを割り当てることができないからである。
【０２１３】
サーバ４００は、第１〜第３のコーデック１５ａ〜１５ｃを利用する３つのエンコーダ３９ａ〜３９ｃを有している。したがって、これらのエンコーダ（サブプロセッサ）は他の処理で使用されていなければ、ステップ２５０２において、サーバ４００は、すべてのコーデックにすべてのサブプロセッサが割り当て可能である。この場合、サーバ４００は、端末装置５００ａ及び５００ｂが用いる第１のコーデック１５ａを第１のエンコーダ３９ａに割り当て、端末装置５００ｃが用いる第２のコーデック１５ｂを第２のエンコーダ３９ｂに割り当てる（ステップ２５０３）。
【０２１４】
この後は、サーバ４００は、設定された各コーデックやビットレートを用いてデータをエンコードし、エンコードされたデータの送信を開始する（ステップ２５０４）。サーバ４００は、データの送信途中で、図１９で示したフローと同様な処理を、各端末装置５００ａ〜５００ｄに対して実行する（ステップ２５０５）（この場合、各端末装置５００ａ〜５００ｄは、図１８に示すフローを実行する。）。
【０２１５】
ステップ２５０２において、コーデックごとの割り当てが不可能な場合は、ステップ２５０６に進む（ステップ２５０２のＮＯ）。コーデックごとの割り当てが不可能な場合とは以下のような場合である。例えば、今、各端末装置５００ａ〜５００ｄが図２６に示すコーデックをそれぞれ用いる場合には、サーバ４００が３つのコーデックのうち、１つまたは２つのコーデックが使えない場合である。これは、サーバ４００が何らかの理由、例えばサーバ４００がＭＣＵシステム以外の処理でサブプロセッサが使用されているとき等が挙げられる。
【０２１６】
また、コーデックごとの割り当てが不可能な場合の他の理由としては、端末装置５００ｄが、サーバ４００が有していない第４のコーデック１５ｄを用いる場合である。すなわち、端末装置５００ｄの初期設定が第４のコーデック１５ｄを用いる設定になっていることを、サーバ４００がステップ２４０３で認識した場合である。
【０２１７】
このような場合において、サーバ４００は、割り当て可能なサブプロセッサ数、つまり割り当て可能なコーデック数が１つの場合には（ステップ２５０６のＹＥＳ）、すべての端末装置５００ａ〜５００ｄに１つのコーデックで対応可能なコーデックに切り替える（ステップ２５０７）。この場合、そのコーデックは第３のコーデック１５ｃとなる。したがって、サーバ４００は、第３のコーデック１５ｃを用いてデータをエンコードし、送信を開始することができる（ステップ２５０４）。これにより、各端末装置５００ａ〜５００ｄは、第３のコーデック１５ｃを用いて送信されるデータをそれぞれデコードすることができる。この場合において、ステップ２５０５では、サーバ４００は、ネットワーク状況等に応じてコーデックを切り替えるが、その時点で割り当て可能なサブプロセッサ数が未だ１つの場合は、ネットワーク状況が変わっても、サーバ４００はコーデックの切り替えは行わない。
【０２１８】
ステップ２５０６において、サーバ４００は、割り当て可能なサブプロセッサ数、つまり割り当て可能なコーデック数が２つの場合には、ステップ２５０８に進む（ステップ２５０６のＮＯ）。ステップ２５０８では、すべての端末装置５００ａ〜５００ｄに対応可能なコーデックである第３のコーデック１５ｃと、第３のコーデック１５ｃを用いる端末装置の数の次に多い端末装置が用いる共通のコーデック、つまり第１のコーデック１５ａとを割り当てる（図２６参照）。これにより、端末装置５００ａ及び５００ｂは、第１のコーデック１５ａを用い、端末装置５００ｃ及び５００ｄは第３のコーデックを用いて送信されるデータをそれぞれデコードすることができる。
【０２１９】
以上のように、本実施の形態に係るサーバ４００は、取得された端末装置５００ａ〜５００ｄごとのステータス情報に基づき、コーデックを割り当てることができる。これにより、端末装置５００ａ〜５００ｄごとにコーデックが異なっていても、最適な環境下で通信することができる。また、サーバ４００の負荷の状況に応じて、あるいは、サーバの能力に応じて、コーデックを割り当てることで、サーバ４００の負担を軽減することができる。
【図面の簡単な説明】
【０２２０】
【図１】本発明において前提となるネットワークシステムの一例を示す図である。
【図２】情報処理装置が備える情報処理コントローラの説明に供する図である。
【図３】ソフトウェアセルの一例を示す図である。
【図４】ＤＭＡコマンドがステータス返信コマンドである場合のソフトウェアセルのデータ領域を示す図である。
【図５】複数の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図６】情報処理コントローラのソフトウェア構成の一例を示す図である。
【図７】４台の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図８】図７のシステムにおける分散処理の例を示す図である。
【図９】本発明の一実施の形態に係る通信システムの構成を示すブロック図である。
【図１０】送信装置が有するエンコーダのコーデックを示す図である。
【図１１】受信装置が有するデコーダのコーデックを示す図である。
【図１２】ＲＴＰパケットの構成図である。
【図１３】Echoパケットの構成図である。
【図１４】Echo-Replyパケットの構成図である。
【図１５】上記通信システムの動作を示すフローチャートである。
【図１６】受信装置が生成するステータス返信コマンドのパケットのデータ領域の構造を示す図である。
【図１７】（ａ）、（ｂ）それぞれ、ステータス情報のうちのコーデック情報及びその他の設定情報を示す。
【図１８】図１５に示すステップ１５０４、１５０５における受信装置の動作例を示すフローチャートである。
【図１９】図１８に示すステップ１８０４の後の送信装置の動作を示すフローチャートである。
【図２０】Echoパケットの送信処理フローを示す図である
【図２１】Echo-Replyパケットの受信およびＲＴＴ算出処理フローを示す図である。
【図２２】本発明の他の実施の形態に係る通信システムの構成を示すブロック図である。
【図２３】サーバ及び各端末装置がそれぞれ有するコーデックを示す図である。
【図２４】サーバと各端末装置の接続が確認されるまでの動作を示すフローチャートである。
【図２５】図２４に示すステップ２４０８以降のサーバの動作を示すフローチャートである。
【図２６】各端末装置が初期状態で用いるコーデックを示す図である。
【符号の説明】
【０２２１】
１、２、３…情報処理装置
９、５０…ネットワーク
１５ａ…第１のコーデック
１５ｂ…第２のコーデック
１５ｃ…第３のコーデック
１５ｄ…第４のコーデック
３４、５５…ネットワーク監視部
３９ａ…第１のエンコーダ
３９ｂ…第２のエンコーダ
３９ｃ…第３のエンコーダ
５５…ネットワーク監視部
５９ａ…第１のデコーダ
５９ｂ…第２のデコーダ
５９ｃ…第３のデコーダ
１００…送信装置
２００…受信装置
３００…通信システム
４００…ＭＣＵサーバ
５００ａ〜５００ｄ…端末装置
【図１】
2006033396.tif 000003
【図２】
2006033396.tif 000004
【図３】
2006033396.tif 000005
【図４】
2006033396.tif 000006
【図５】
2006033396.tif 000007
【図６】
2006033396.tif 000008
【図７】
2006033396.tif 000009
【図８】
2006033396.tif 000010
【図９】
2006033396.tif 000011
【図１０】
2006033396.tif 000012
【図１１】
2006033396.tif 000013
【図１２】
2006033396.tif 000014
【図１３】
2006033396.tif 000015
【図１４】
2006033396.tif 000016
【図１５】
2006033396.tif 000017
【図１６】
2006033396.tif 000018
【図１７】
2006033396.tif 000019
【図１８】
2006033396.tif 000020
【図１９】
2006033396.tif 000021
【図２０】
2006033396.tif 000022
【図２１】
2006033396.tif 000023
【図２２】
2006033396.tif 000024
【図２３】
2006033396.tif 000025
【図２４】
2006033396.tif 000026
【図２５】
2006033396.tif 000027
【図２６】
2006033396.tif 000028