本発明の一実施形態について図1ないし図9に基づいて説明すれば、以下の通りである。
本実施の形態では、ピアツーピア型のネットワークを介して接続された複数のパーソナルコンピュータ間で、映像や音声のデータを同時、かつ、双方向にデータの送受信をすることによって実現されるテレビ会議システムについて説明する。
ピアツーピア型のネットワークとは、複数の端末装置が対等の関係にあり、サーバを介さずに各端末装置が直接的にデータのやり取りを行うものである。ピアツーピア型のネットワークを介したテレビ会議の概要について、図2を用いて具体的に説明すると、以下のとおりである。
図2に示すように、会議参加者Aの端末装置から出力された音声や映像のデータは、中継サーバ6を介して、会議参加者B,C,Dに送信される。また、会議参加者Bの端末装置から出力された音声や映像のデータは、会議参加者A,C,Dに、会議参加者Cの端末装置からの音声や映像のデータは、会議参加者A,B,Dに、会議参加者Dの端末装置からの音声や映像のデータは、会議参加者A,B,Cにそれぞれ送信される。そして、会議参加者B,C,Dからのデータを受信した会議参加者Aの端末装置では、会議参加者Aの音声や映像のデータと、受信した会議参加者B,C,Dの音声や映像のデータとをミキシングして、再生する。なお、会議参加者B,C,Dにおいても同様の動作が行われる。
なお、本実施の形態における各端末装置間の通信は、パケットを用いたパケット通信であるため、前記送受信されるデータは、複数に分割されたパケットから構成されている。
まず、本実施の形態におけるテレビ会議システム1の構成について、図1および図3を用いて説明する。
図1は、端末装置の概略構成を示す機能ブロック図である。図3は、テレビ会議システム1の全体の構成を示す説明図である。
図3に示すように、テレビ会議システム1は、会議参加者(以下、単にユーザ)A〜Dのそれぞれが使用する端末装置2〜5と、中継サーバ6と、ネットワーク7とから構成される。
端末装置2〜5には、パーソナルコンピュータを用いる。各端末装置の構成についての詳細な説明は後述する。
また、中継サーバ6は、ピアツーピアネットワークにおけるサーバであるため、特定の管理を行わず、各端末装置間の通信を中継するものである。
ネットワーク7は、インターネット、携帯電話網や有線電話網等の公衆通信網、専用通信回線等の非公衆通信網等の1または複数の通信網から構成されている。また、ネットワーク7は、インターネットプロトコル(IP)を用いて、データを複数の固定長のパケットに分割して転送する構成であり、端末装置2〜5等のネットワーク7に接続される各機器には、IPアドレスが割り当てられている。
(端末装置の構成)
次に、各端末装置2〜5の構成について説明するが、ここでは、ユーザDが使用する端末装置5の構成について、図1および図4を用いて説明する。
図4は、入出力情報記憶部24に格納されるテーブルの一例を示す図である。
テレビ会議システム1は、ピアツーピア型のネットワーク形態で接続された複数の端末装置2・3・4・5が、映像および音声の少なくともいずれか一方のデータを相互に送受信することによりテレビ会議を行うシステムである。
端末装置5は、通信部8と、入出力制御部9と、キャッシュ制御部10と、映像キャッシュ部11と、音声キャッシュ部12と、映像再生部13と、音声再生部14と、テレビ会議GUI(graphical user interface)15と、カメラ16と、マイク17と、表示部18と、操作部19と、スピーカ20と、記憶部21とを備える構成である。
通信部8は、中継サーバ6を介して端末装置2〜4と通信を行うものである。具体的には、通信部8は、端末装置2・3・4毎に割り当てられた複数の入出力ポート(ポート)を有する。各入出力ポートは、中継サーバ6との間で、通信相手のユーザごと、通信対象のデータ種別ごとに張られている各コネクションのインタフェースとして割り当てられている。通信部8は、データがどの入出力ポートから入力されたかを示す入出力ポート情報とともに、入力されたデータを映像・音声入力管理部23(図1)に出力する。また、通信部8は、映像・音声出力管理部22(図1)から入力されたデータを、映像・音声出力管理部22からの入出力ポート情報によって指定された入出力ポートを介して、中継サーバ6に出力する。また、通信部8は、各端末装置2〜4との通信の環境を検出する機能を備えている。
入出力制御部9は、通信部8を介して行われる、端末装置5へのデータの入出力を制御するものであり、映像・音声出力管理部22と映像・音声入力管理部23とを備える。
映像・音声出力管理部22は、ユーザDによって入力されたデータの、他の端末装置への出力を管理するものであり、カメラ16やマイク17から入力されたデータ等を通信部8へ出力する。具体的には、映像・音声出力管理部22は、ユーザDによって、マイクまたはカメラを介して入力された音声または映像のデータを送信するユーザと、送信するデータの種別とを特定する。そして、映像・音声出力管理部22は、前記特定した情報を基に、入出力情報記憶部24(図1)に格納されているテーブルを参照し、該特定した送信先のユーザとデータの種別とに対応する入出力ポートを選定する。そして、選定した入出力ポートの情報(入出力ポート情報)と、ユーザDによって入力されたデータとを、通信部8に出力する。
例えば、テレビ会議に参加している参加者全員に、データを送信すると設定されている場合で、ユーザDから音声データのみの入力があったとすると、映像・音声出力管理部22は、まず、ユーザAからCのすべてに、音声データを出力すると特定する。そして、この情報を基に、映像・音声出力管理部22は、入出力情報記憶部24に格納されている図4に示すテーブルを参照し、前記特定した情報に対応する、入出力ポート1,3,5を選定する。そして、この選定した入出力ポート1,3,5の情報を通信部8に出力する。
映像・音声入力管理部23は、端末装置2〜4から端末装置5へのデータの入力を管理するものである。具体的には、映像・音声入力管理部23は、通信部8から、端末装置2〜4から受信したデータ(受信データ)と、該データを受信する際の入出力ポート情報とを取得する。そして、映像・音声入力管理部23は、取得した入出力ポート情報を基に、入出力情報記憶部24に格納されたテーブルを参照し、そのテーブルから、該入出力ポートに対応する、受信データの送信元であるユーザおよび受信データの種別の情報を取得する。映像・音声入力管理部23は、入出力情報記憶部24から取得した、送信元のユーザの情報と受信データの種別の情報とを、受信データとともにキャッシュ制御部10に出力する。
例えば、端末装置5が、あるデータを、通信部8の入出力ポート1,3を介して受信したとすると、映像・音声入力管理部23は、通信部8から、受信したデータとともに、入出力ポート1,3を介して受信した旨の入出力ポート情報を取得する。そして、映像・音声入力管理部23は、該入出力ポート情報に基づいて、入出力情報記憶部24のテーブルから、ポート1,3のそれぞれに対応する、受信データの送信元である参加者およびデータの種別の情報を取得する。ここでは、入出力ポート1を介して受信したデータであるので、該データは、ユーザAから送信された音声データである。
記憶部21は、端末装置5の各種機能を実行するために必要なプログラムやデータ等を格納するメモリやハードディスク等であり、入出力情報記憶部24を備える。
入出力情報記憶部24は、映像・音声出力管理部22が端末装置5からデータを出力する際に、どの入出力ポートを介して、出力するかを特定するために参照する情報を格納するものであり、また、映像・音声入力管理部23が端末装置5へ入力されたデータの送信元となる端末装置と、入力されたデータの種別を特定するために参照する情報を格納するものである。
具体的には、入出力情報記憶部24は、端末装置5にデータが入出力される際に、どの入出力ポートを介したかを示す入出力ポート情報と、各入出力ポートを介して入出力されるデータがどのユーザとコネクションされているかを示す情報と、各入出力ポートを介して入出力されるデータが映像データであるか、または音声データであるかを示す情報とを対応付けたテーブルを格納している。このテーブルの一例は図4に示すとおりである。
また、図4のテーブルでは、ユーザの情報をA,B,Cと示しているが、実際は、テレビ会議システムのユーザにはそれぞれテレビ会議用IDが付与されており、各ユーザに付与されたテレビ会議用IDの情報が格納されている。
キャッシュ制御部10(一時記憶制御手段)は、映像・音声入力管理部23から入力された情報を基に、または、テレビ会議GUI15からの指示に基づき、映像キャッシュ部11および音声キャッシュ部12を制御するものである。具体的には、キャッシュ制御部10は、各端末装置2・3・4から通信部8の各ポートに入力されるパケットを、該ポートが割り当てられた前記端末装置2・3・4に対応する映像キャッシュ部11のデータ格納領域11a・11b・11c(後述)、または音声キャッシュ部12のデータ格納領域12a・12b・12c(後述)に格納する。
また、キャッシュ制御部10は、テレビ会議開始後、映像再生部13または音声再生部14が、前記データ格納領域11a・11b・11c、または12a・12b・12cに、最初にパケットを格納してから、該格納したパケットを再生するまでの時間を、複数の前記端末装置2・3・4との通信環境のうちで、最も悪い通信環境に応じて、複数の前記端末装置2・3・4に共通に設定する。
映像キャッシュ部11は、受信データの種別が映像であるデータを一時的に記憶するものであり、受信データの送信元であるユーザごとに記憶するものである。
具体的には、図1に示すように、映像キャッシュ部11は、ユーザAのデータを格納するユーザAデータ格納領域11aと、ユーザBのデータを格納するユーザBデータ格納領域11bと、ユーザCのデータを格納するユーザCデータ格納領域11cとを備える。
ユーザデータ格納領域11a・11b・11cは、端末装置2・3・4毎に、当該端末装置2・3・4から受信した映像データを含むパケットを複数格納するものである。
音声キャッシュ部12は、受信データの種別が音声であるデータを、一時的に記憶するものであり、受信データの送信元であるユーザごとに記憶するものである。
具体的には、図1に示すように、音声キャッシュ部12は、ユーザAのデータを格納するユーザAデータ格納領域12aと、ユーザBのデータを格納するユーザBデータ格納領域12bと、ユーザCのデータを格納するユーザCデータ格納領域12cとを備える。
ユーザデータ格納領域12a・12b・12cは、端末装置2・3・4毎に、当該端末装置2・3・4から受信した音声データを含むパケットを複数格納するものである。
なお、キャッシュ制御部10、映像キャッシュ部11、音声キャッシュ部12の詳細な説明については、後述する。
映像再生部13(再生手段)は、映像キャッシュ部11から出力された各ユーザの映像データのそれぞれを、テレビ会議GUI15を介して、表示部18上で再生させる。また、映像再生部13は、ユーザDがカメラ16を用いて自分を撮影することによって入力される該映像データも、テレビ会議GUI15を介して、表示部18上で再生する。
具体的には、端末装置2・3・4毎に、データ格納部11a・11b・11cから、該データ格納部11a・11b・11cに最も早く格納されたパケットを、パケットに含まれるデータの再生時間毎に読み出し、再生するものである。
例えば、ユーザAの映像を再生するとき、テレビ会議GUI15によって表示される、図9に示すようなテレビ会議画面30における、ユーザAの映像を表示する領域で、映像再生部13は、ユーザAの映像データを再生させる。また、映像再生部13は、ユーザBの映像を再生するとき、ユーザBの映像データを、該テレビ会議画面30におけるユーザBの映像を表示する領域で再生させる。また、ユーザCの映像を再生するとき、ユーザCの映像データを、該テレビ会議画面30におけるユーザCの映像を表示する領域で再生させる。
音声再生部14(再生手段)は、音声キャッシュ部12から出力された各ユーザの音声データをミキシングすることによって1つの連続した音声データとし、該音声データに基づいた音声をスピーカ20に再生させるものである。また、音声再生部14は、マイク17を用いて端末装置5に入力したユーザDの音声データを、他のユーザの音声データとミキシングすることにより1つの音声データとして、スピーカ20で再生する。
具体的には、端末装置2・3・4毎に、データ格納部12a・12b・12cから、該データ格納部12a・12b・12cに最も早く格納されたパケットを、パケットに含まれるデータの再生時間毎に読み出し、読み出したパケットによって構成される各端末装置からの音声データをミキシングし、スピーカで再生するものである。
テレビ会議GUI15は、表示部18に、図9に示すようなテレビ会議画面30を表示させるものである。また、テレビ会議GUI15は、テレビ会議画面30を介して、ユーザDによって操作部19を用いて入力されたから種々の操作情報を取得するものである。
テレビ会議画面30は、テレビ会議に参加するユーザや自分の映像を、表示部18上に表示する画面である。具体的には、テレビ会議画面30は、テレビ会議に参加している他のユーザA〜Cの映像を表示する領域と、キャッシュサイズの設定等のユーザDがテレビ会議において種々の設定を行う操作ボタン領域とを有する。ユーザDは、該テレビ会議画面30を介して、テレビ会議に参加する他のユーザ、または自分の映像を確認することができる。
例えば、ユーザDがユーザBの音声だけ選択して再生するとき、ユーザDは、操作部19を用いて、テレビ会議画面30上の、選択したユーザの音声のみを再生する「音声再生ユーザ選択ボタン」を選択し、ユーザBの映像が表示されている領域を選択する。これにより、テレビ会議GUI15は、テレビ会議画面30を介して、ユーザDがユーザBを選択したと認識する。そして、テレビ会議GUI15は、音声再生部14にその旨を通知し、音声再生部14はユーザBのみの音声を再生する。
また、ユーザDがユーザAの映像だけ選択して再生するときも、同様に、ユーザDは、選択したユーザの映像のみを再生する「映像再生ユーザ選択ボタン」を選択し、テレビ会議画面30上のユーザAの映像が表示されている領域を選択する。これにより、テレビ会議GUI15は、ユーザDがユーザAを選択したと認識し、映像再生部13を介して、ユーザAのみの映像を再生する。
カメラ16は、ユーザDの映像を端末装置5に取り込むものである。また、マイク17は、ユーザDの音声を端末装置5に取り込むものである。
表示部18は、テレビ会議画面30を表示するものであり、例えばPCのディスプレイ等である。
操作部19は、テレビ会議画面30に表示されたメニューを選択するとき等、ユーザが端末装置5を操作するときに用いるものであり、例えばPCのマウス等である。
スピーカ20は、各ユーザの音声を出力するものである。
次に、キャッシュ制御部10、映像キャッシュ部11、音声キャッシュ部12について、詳細に説明する。
また、ここでは、端末装置5が、ユーザAから映像データを取得した場合について説明する。
キャッシュ制御部10は、端末装置2から受信した受信データと、該受信データの送信元である端末装置2のユーザAのテレビ会議IDと、該受信データが映像データである旨の情報とを、映像・音声入力管理部23から取得する。
キャッシュ制御部10は、映像・音声入力管理部23から情報を取得すると、まず、キャッシュ時間を設定する。キャッシュ時間の設定は、キャッシュ制御部10が、自動で設定することも可能であるし、ユーザDが手動で設定することも可能である。具体的には、図9で示すように、ユーザDが自動の欄にチェックを入れると、テレビ会議GUI15が、キャッシュ時間を自動で設定すると認識し、キャッシュ時間を自動で設定する旨をキャッシュ制御部10に出力する。
このとき、キャッシュ制御部10は、通信部8から入出力制御部9を介して取得した、各端末装置2〜4との通信環境のうち、最も通信環境の悪い端末装置を認識し、該通信環境の悪い端末装置に対しても滑らかにデータの再生が行えるように、キャッシュ時間を長く設定する。
一方、ユーザDが、図9で示すように、テレビ会議画面30を介して、データのキャッシュサイズ、すなわちキャッシュ時間を所望のサイズに設定すると、テレビ会議GUI15が、設定した所望のキャッシュ時間をキャッシュ制御部10に出力する。そして、キャッシュ制御部10が、該キャッシュ時間に応じて、後述のレギュラー格納領域のブロック数を設定する。
また、ここでのキャッシュ時間は、後述のレギュラー格納領域のブロック数5個と設定されているものとする。
キャッシュ制御部10は、キャッシュ時間を、レギュラー領域のブロック数5個と設定後、受信データが映像データであると認識し、受信データのパケットを格納するキャッシュ部を映像キャッシュ部11と選択する。次に、キャッシュ制御部10は、ユーザAのテレビ会議IDから、該受信データはユーザAからのデータであると認識するため、映像キャッシュ部11のうち、ユーザAデータ格納領域11aを選択する。そして、キャッシュ制御部10は、ユーザAから受信した受信データのパケットを、映像キャッシュ部11のユーザAデータ格納領域11aに格納させる。
図5は、ユーザAデータ格納領域11aにおいて、パケットがキャッシュされる様子を示した説明図である。
ユーザAデータ格納領域11aにおけるパケットのキャッシュ方法について図5を用いて説明すると、以下の通りである。
なお、ここでは、ユーザAデータ格納領域11aについてのみ説明しているが、他のデータ格納領域11b、11c、12a〜12cも同一の構成である。
ユーザAデータ格納領域11aは、図5に示すように、パケット1つ分を格納するブロックが、10個連なった構成をしている。また、この10個のブロックのうち、パケットが出力される側(図5の紙面に向かって右側)の5個のブロックi〜vは、レギュラー格納領域であり、パケットの格納、すなわち受信データの保存に用いられる。なお、パケットが出力されるとは、映像再生部13から読み出されることを意味する。
一方、パケットが入力される側(図5の紙面に向かって左側)の5個のブロックは、予備格納領域であり、レギュラー格納領域からあふれたパケットを格納する領域である。
また、各データ格納領域11a〜11c,12a〜12cにおけるレギュラー格納領域のブロック数は常に共通の数であるため、データ格納領域11b、11c、12a〜12cのレギュラー格納領域のブロック数は、レギュラー格納領域11aと同様の5個である。
具体的には、図5に示すように、キャッシュ制御部10が、タイミング6(以下、時刻t=6)において、連続する4つのパケットd〜gを受信したとき、レギュラー格納領域には、すでにパケットb,cが格納されているため、レギュラー格納領域の空白ブロックは3つである。しかしながら、受信されたのは4つのパケットであるため、早く到達したパケットd〜fまではレギュラー格納領域に含まれ、この4つのパケットの中で最も遅く到達したパケットgはレギュラー格納領域からあふれる。予備格納領域が、このあふれたパケットgを格納するため、パケットgの格納もれによって生じるデータの途切れを防ぐことが可能となる。
また、キャッシュ制御部10は、テレビ会議が開始されてから最初に到達したパケットを、まず、映像キャッシュ部11におけるレギュラー格納領域の最もパケット入力側に位置するブロックiに格納する。そして、1カウントごとに、1ブロックずつパケット出力側に該パケットを順に移動させる、すなわち、ブロックii〜ivに該パケットを格納する。また、該パケットが最もパケット出力側のブロックvに格納されると、キャッシュ制御部10は、次のカウントで、該パケットを映像再生部13に出力する。
ここからは、図5に示すような、9つのパケットa〜iで構成されている、端末装置2から送信されたユーザAの映像データを用いて、映像キャッシュ部11におけるキャッシュ方法について説明する。また、端末装置2と端末装置5との通信環境の悪化等により、前記9つの連続したパケットa〜iが途切れると、端末装置5は、図5に示すように、途切れたパケットを受信する。
まず、キャッシュ制御部10は、テレビ会議を開始してから、最初に端末装置5に到達するユーザAの映像データのパケットaを、レギュラー格納領域における5つのブロックのうち、最もパケット出力側から遠いブロックi、すなわち図5における右側から5番目のブロックに格納する。
また、キャッシュ制御部10は、テレビ会議開始後、最初に端末装置5に到達したパケットaがキャッシュ制御部10に入力された時刻をt=1として、その後、所定の時間間隔で、t=2、t=3、t=4・・・とカウントする。そして、該カウントごとに、格納されているパケットを1つずつ出力側のブロックに移動させる。なお、ここにおける所定の時間、すなわち1カウントとは、1パケットを再生する時間を指す。
キャッシュ制御部10は、1カウントで1つ、パケットを出力側のブロックに移動させるため、t=2をカウントすると同時に、パケットaを、ブロックiよりもパケット出力側に位置するブロックiiに移動させる。
また、キャッシュ制御部10は、t=2のカウントで入力された2つの連続したパケットb,cを映像キャッシュ部11に格納する。このとき、キャッシュ制御部10は、パケットbを、パケットaが格納されていたブロックiに格納するとともに、連続するパケットcを予備格納領域の最もパケット出力側に位置するブロックに格納する。
また、キャッシュ制御部10は、t=3をカウントすると同時に、パケットa,b,cをそれぞれパケット出力側の隣接するブロックに移動させる。すなわち、パケットaはブロックiiiに、パケットbはブロックiiに、パケットcはブロックiに格納される。
また、キャッシュ制御部10は、t=4をカウントすると同時に、パケットa,b,cのそれぞれを、さらにパケット出力側の隣接するブロックに移動させる。すなわち、パケットaはブロックivに、パケットbはブロックiiiに、パケットcはブロックiiに格納される。また、キャッシュ制御部10は、t=5をカウントすると同時に、パケットaをブロックvに、パケットbをブロックivに、パケットaをブロックiiiにそれぞれ格納する。
そして、キャッシュ制御部10は、t=6をカウントすると同時に、パケットaを映像再生部13へ出力し、パケットbをブロックvに、パケットcをブロックivにそれぞれ移動させる。
また、このとき、通信状況の悪化などで遅延して端末装置5に到達したパケットd〜gがキャッシュ制御部10に入力される。
パケットd〜gが入力されると、キャッシュ制御部10は、パケットdをブロックiiiに格納するとともに、パケットe,fをそれぞれブロックii,iに格納する。そして、レギュラー格納領域からあふれたパケットgを予備格納領域の最もパケット出力側に位置するブロックに格納する。
また、キャッシュ制御部10は、t=7をカウントすると同時に、最もパケット出力側のブロックvに格納されていたパケットbを映像再生部13へ出力し、パケットcをブロックvに、パケットdをブロックivに、パケットeをブロックiiiに、パケットfをブロックiiにそれぞれ移動させて格納させる。また、パケットbが出力された分、レギュラー格納領域に空白領域が生じるため、キャッシュ制御部10は、パケットgを、レギュラー格納領域のブロックiに格納する。
このとき、通信状況の悪化などで遅延して端末装置5に到達したパケットh,iがキャッシュ制御部10に入力される。t=7のカウント時点では、レギュラー格納領域に空白領域がないため、キャッシュ制御部10は、パケットh,iを予備格納領域において最もパケット出力側に位置するブロックから順にそれぞれを格納する。
キャッシュ制御部10は、t=8〜14のそれぞれをカウントすると同時に、各タイミング時にブロックvに格納されているパケットc〜iを映像再生部13へ出力するとともに、映像キャッシュ部11の各ブロックに格納されているパケットをそれぞれ1つずつパケット出力側のブロックに移動させる。
上記制御方法によれば、キャッシュ制御部10が、映像キャッシュ部11からパケットを出力するタイミングを制御することができるため、映像キャッシュ部11への入力時に途切れていたデータを、キャッシュ制御部10からの出力時には、途切れのない連続したデータとして出力することが可能となる。
また、ユーザBデータ格納領域11bとユーザCデータ格納領域11cとは、ユーザAデータ格納領域11aと同一の構成であるため、ここでは説明を省略する。また、音声キャッシュ部12におけるユーザAデータ格納領域12aと、ユーザBデータ格納領域12bと、ユーザCデータ格納領域12cも、ユーザAデータ格納領域11aと同一の構成であるため、ここでは説明を省略する。
(テレビ会議システム全体の動作)
次に、テレビ会議システム1全体の動作について、図6を用いて説明する。図6は、テレビ会議システム1全体の動作を示すフローチャート図である。
まず、テレビ会議システム1が動作するためには、複数の端末装置のうち、いずれかがセッションマネージャとして、テレビ会議開始要求を、テレビ会議参加候補の他の端末装置に送信する。
テレビ会議開始要求を受け取った端末装置のユーザが、該テレビ会議に参加する場合には、参加応答通知をセッションマネージャに送信する。このことより、該端末装置とセッションマネージャとの間には、コネクションが確立される(S1)。また、コネクションが確立されると、コネクションが確立された端末装置毎にポートが割り当てられ、入出力ポート情報が作成される(S1)。
そして、テレビ会議が開始し、各端末装置間で様々なテレビ会議処理が行われる(S2)。前記様々なテレビ会議処理の詳細については後述する。
また、テレビ会議に参加しているユーザのうちの1人、例えばユーザAが、ユーザB〜Dへテレビ会議終了要求を行い、すべてのユーザB〜Dからテレビ会議終了応答通知を受けると、テレビ会議が終了する(S3でYES)。そして、各ユーザ間のコネクションが切断される(S4)。
また、すべてのユーザからテレビ会議終了応答通知を受けなければテレビ会議は終了せず(S3でNO)、テレビ会議が続行される。
ここで、様々なテレビ会議処理の詳細については以下に説明する。
(データの受信時における端末装置の処理動作)
まずは、他の端末装置からデータを受信した際の端末装置5の処理動作について説明する。
図7は、テレビ会議処理において、他の端末装置からデータを受信した際の端末装置5の処理動作を示したフローチャート図である。
図7に示すように、端末装置5は、他の端末装置2〜4から通信部8を介してデータを受信すると、まず、通信部8のどの入出力ポートを介してデータが入力されたかを示す入出力ポート情報と、入力されたデータとを映像・音声入力管理部23(図1)に入力させる。
映像・音声入力管理部23は、入力された入出力ポート情報に基づいて、入出力情報記憶部24から、受信データの送信元であるユーザを特定する(S11)とともに、受信データの種別を特定する(S12)。
映像・音声入力管理部23は、特定した受信データの送信元であるユーザと、受信データの種別とをキャッシュ制御部10に出力する。
キャッシュ制御部10は、まず、受信データのキャッシュ時間を自動的に設定する(S13でYES)。これは、図9で示すように、テレビ会議GUI15で、キャッシュもし、キャッシュ制御部10がキャッシュ時間を自動的に設定しない場合(S13でNO)は、ユーザDがテレビ会議GUI15を介して、キャッシュ時間を設定する(S18)。
そして、キャッシュ制御部10は、受信データがユーザAからの映像データであれば(S14でYES)、映像キャッシュ部11のユーザAデータ格納領域11aに、受信データを格納させる。映像キャッシュ部11は、キャッシュ制御部10によって設定されたキャッシュ時間に基づいて、受信データである映像データをキャッシュする(S15、格納ステップ)。
キャッシュ制御部10は、前記キャッシュ時間が経過すると、映像データを、映像キャッシュ部11から映像再生部13に出力させる(S16)。
そして、映像再生部13が、入力された映像データを、テレビ会議GUI15を介して、表示部18上で再生する(S17、再生ステップ)。
また、受信データがユーザAからの音声データであれば(S14でNO)、キャッシュ制御部10は、音声キャッシュ部12のユーザAデータ格納領域12aに、受信データを格納させる。音声キャッシュ部12は、キャッシュ制御部10によって設定されたキャッシュ時間に基づいて、受信データである音声データをキャッシュする(S19、格納ステップ)。
キャッシュ制御部10は、前記キャッシュ時間が経過すると、音声データを、音声キャッシュ部12から音声再生部14に出力させる(S20)。
そして、音声再生部14は、ユーザBやユーザCの音声データを上記同様な処理動作によって得られると、S20で入力されたユーザAの音声データと、ユーザBやユーザCの音声データとをミキシングする(S21)。S21のミキシングによって、一つの連続したデータとなった音声データは、スピーカ20を介して、再生される(S22、再生ステップ)。
(データの送信時における端末装置の処理動作)
次に、端末装置5に、ユーザDが自分の映像や音声をデータとして取り込み、該映像データや音声データを他の端末装置2〜4に送信する際の端末装置5の処理動作について説明する。
図8は、テレビ会議処理において、端末装置5から他の端末装置に映像または音声データを送信する際の処理動作を示したフローチャート図である。
まず、カメラ16を介して、ユーザDの映像が端末装置5に取り込まれて(S31でYES)、該取り込んだ映像を他の端末装置2〜4に送信する場合(S32でYES)、端末装置5は、映像・音声出力管理部22に取り込んだ映像データを入力させる。
そして、映像・音声出力管理部22は、送信先のユーザを認識する(S33)。具体的には、ユーザDからの指定があれば、その指示に従って送信先のユーザを認識し、また、全ユーザに送信すると設定されているときは、送信先は全ユーザであると認識する。
映像・音声出力管理部22は、S33で認識した送信先のユーザと、入力されたデータの種別と(S34)から、入出力情報記憶部24を参照して、各端末装置に送信する際に用いる入出力ポートを特定する(S35)。
そして、映像・音声出力管理部22は、映像データとともに、特定した入出力ポート情報を通信部8に出力する。通信部8は、該入出力ポート情報に基づいて、各端末装置に映像データを送信する(S36)。
また、カメラ16を介して映像を取り込まずに(S31でNO)、マイク17を介して音声データを取り込む場合についても(S37でYES)、取り込んだ音声データを他の端末装置に送信するときは、S32〜S36と同じ動作を行う。
また、カメラ16やマイク17を介して、端末装置5内に取り込んだ映像データや、音声データを、端末装置5の表示部18上のテレビ会議GUI15を介して表示するときは(S32でNO)、カメラ16は、映像データを映像再生部13へ出力し、マイク17は、音声データを音声再生部14へ出力する(S38)。
そして、映像再生部13は、ユーザDの映像を、テレビ会議GUI15を介して表示部18で再生させる(S39)。一方、音声再生部14は、ユーザDの音声データを、他のユーザの音声データがあれば、該音声データとミキシングして、スピーカ20を介して出力する(S39)。
本実施の形態では、キャッシュ制御部10は、レギュラー格納領域のブロック数を、各端末装置との通信環境のうち、最も悪い通信環境に合わせて設定する構成であるが、本発明はこれに限らず、どの端末装置との通信環境も良好である場合等には、最も少ない通信量で通信可能なブロック数に設定することが可能である。
例えば、すべての端末装置との通信環境が良好であり、図5において、パケットcに対するパケットdの遅延時間が2タイミング分であるときは、レギュラー格納領域のブロック数をブロックii〜vの4つと設定することができる。この場合、パケットaを最初にブロックiではなく、ブロックiiに格納する。
また、本実施の形態では、各データ格納領域11a〜11c,12a〜12cは、レギュラー格納領域と予備格納領域とから構成されているが、本発明はこれに限られず、レギュラー格納領域に相当するもののみから構成されていてもよい。
また、本実施の形態では、各データ格納領域11a〜11c,12a〜12cのブロック数を10個と設定しているが、本発明はこれに限らず、何個に設定しても構わない。
また、本実施の形態では、パケットは、受信したパケット順に並べて格納され、格納されたパケットは、パケット出力側に順に移動し、最もパケットが出力される側に位置すると出力される構成であるが、本発明のキャッシュ制御部10による映像キャッシュ部11または音声キャッシュ部12のキャッシュ方法は、上記説明したキャッシュ方法に限られない。例えば、入力されるパケットに、入力順にインデックスを付し、映像再生部13がインデックス番号順にパケットを読み出す構成であってもよい。この場合、本実施の形態のように、入力順にパケットを並べて格納する必要がない。
また、本実施の形態では、ユーザDが入力した音声または映像のデータは、すべての参加者に送信される場合について説明したが、本発明はこれに限られず、ユーザDが指定した送信先にのみ送信される構成であってもよい。例えば、ユーザDがデータの送信先をユーザBとCとに指定する場合、ユーザDは操作部19を用いて、テレビ会議GUI15上のユーザBが表示されている領域とユーザCが表示されている領域とを選択することにより、テレビ会議GUI15は、データの送信先をユーザBとCとに指定したと認識する。そして、テレビ会議GUI15が、データの送信先をユーザBとCとに設定する指示を映像・音声出力管理部22に出力する。映像・音声出力管理部22は、カメラから映像データが入力された場合、テレビ会議GUI15からの指示を受けて、入出力情報記憶部24から、参加者がユーザB,Cでありデータ種別が映像データである入出力ポート、すなわち、入出力ポート4,6の情報を取得し、通信部8へ出力する。そして、通信部8が取得した入出力ポート情報を基に、入出力ポート4,6を介して、ユーザB,Cに映像データを送信するようになっていてもよい。
また、本実施の形態における映像キャッシュ部11および音声キャッシュ部12は、自己、ユーザDの映像データおよび音声データをキャッシュするデータ格納領域を有しない構成であるが、映像キャッシュ部11および音声キャッシュ部12が、それぞれユーザDデータ格納領域を有する構成であってもよい。
また、例えば、ユーザEが途中からテレビ会議に参加する場合には、キャッシュ制御部10が、映像キャッシュ部11および音声キャッシュ部12に、ユーザEからのデータを格納するためのユーザEデータ格納領域を作成するようにしてもよい。
また、本発明は、SOBA(登録商標)(Session Oriented Broadband Application)にも適用することができる。
SOBAとは、通信ネットワークを介して接続された端末装置のユーザ同士がリアルタイムコミュニケーションを実現するための仕組みを提供するものである。リアルタイムコミュニケーションの例としては、チャット機能、ホワイトボード機能などのコミュニケーション機能、音声や動画によるコミュニケーション機能、遠隔画面操作機能などが挙げられる。SOBAにおいて、上記のようなコミュニケーション機能によって共有される通信接続の範囲はセッションと呼ばれる。
図10は、SOBAが搭載された端末装置201および端末装置202が通信ネットワークを介して接続されている状態を示している。ここでは両者は対等であり、互いにデータの送受信が可能となっているものとする。
端末装置201および端末装置202のそれぞれには、アプリケーション層、セッション層、およびサービス層の3つの層が形成される。アプリケーション層は、SOBA上で動くアプリケーションによって構成される層である。このアプリケーション層には、例えば、部品アプリケーション、および画面共有アプリケーションなどが含まれる。より具体的なアプリケーションとしては、チャット機能アプリケーション、ホワイトボード機能アプリケーション、音声動画通信機能アプリケーションなどが挙げられる。
セッション層は、セッションの状態管理や、データ配信先の管理を行う層である。
サービス層は、SOBAによる通信機能を実現するための機能によって構成される層である。このサービス層には、例えば同期サービス機能、リソースサービス機能、ディレクトリサービス機能、セキュリティサービス機能、およびネットワークサービス機能などが挙げられる。同期サービス機能とは、セッションに含まれる端末装置との間の通信の同期を制御する機能である。リソースサービス機能とは、音声や動画像のデータを制御する機能である。ディレクトリサービス機能とは、通信先の端末装置またはユーザを探索するためのディレクトリを提供する機能である。セキュリティサービス機能とは、アクセスの許認可機能、および、通信データの暗号化機能などを提供する機能である。ネットワークサービス機能とは、通信ネットワーク上で通信を行うために必要とされる処理を行う機能である。
SOBAによって通信が行われるデータとしては、部品アプリケーションデータ、画面共有アプリケーションデータ、およびセッションコントロールデータが挙げられる。部品アプリケーションデータとは、部品アプリケーションの状態変更イベントを通知するデータである。画面共有アプリケーションデータとは、画面共有アプリケーションにおいて送信指示が行われた送信データ、および、画面共有アプリケーションの状態変更イベントを通知するデータなどに相当する。セッションコントロールデータとは、セッションの状態変更イベントを通知するデータである。
図11(a)は、部品アプリケーションデータが通信ネットワーク上を流れる際のパケット構成を示している。同図に示すように、該パケットは、TCP/IPヘッダ、SOBAヘッダ、部品アプリケーションヘッダ、および部品アプリケーションデータから構成されている。TCP/IPヘッダは、TCP/IPに基づく通信が行われる際に必要とされるヘッダ情報であり、サービス層におけるネットワークサービス機能によって付加される。SOBAヘッダは、サービス層におけるネットワークサービス機能によって付加されるヘッダ情報であり、SOBAのプロトコルに基づいたデータであることを表している
部品アプリケーションヘッダは、アプリケーション層における部品アプリケーションによって付加されるヘッダ情報であり、該パケットに含まれるデータが利用される部品アプリケーションを特定する情報を示している。部品アプリケーションデータは、上記したように、部品アプリケーションの状態変更イベントを通知するデータである。
図11(b)は、画面共有アプリケーションデータが通信ネットワーク上を流れる際のパケット構成を示している。同図に示すように、該パケットは、TCP/IPヘッダ、SOBAヘッダ、画面共有アプリケーションヘッダ、および画面共有アプリケーションデータから構成されている。TCP/IPヘッダ、およびSOBAヘッダは上記のとおりである。画面共有アプリケーションヘッダは、アプリケーション層における画面共有アプリケーションによって付加されるヘッダ情報であり、該パケットに含まれるデータが利用される画面共有アプリケーションを特定する情報を示している。画面共有アプリケーションデータは、上記したように、画面共有アプリケーションにおいて送信指示が行われた送信データ、および、画面共有アプリケーションの状態変更イベントを通知するデータである。
図11(c)は、セッションコントロールデータが通信ネットワーク上を流れる際のパケット構成を示している。同図に示すように、該パケットは、TCP/IPヘッダ、SOBAヘッダ、セッションヘッダ、およびセッションコントロールデータから構成されている。TCP/IPヘッダ、およびSOBAヘッダは上記のとおりである。セッションヘッダは、セッション層によって付加されるヘッダ情報であり、セッションコントロールの種類を特定する情報を示している。セッションコントロールデータは、上記したように、セッションの状態変更イベントを通知するデータである。
例えば端末装置201において、部品アプリケーションによって状態変更イベントが発生した場合、まず部品アプリケーションにおいて部品アプリケーションデータおよび部品アプリケーションヘッダが生成される。その後、サービス層において、SOBAヘッダおよびTCP/IPヘッダが不可され、図11(a)に示すパケットが通信ネットワークを介して端末装置202に送信される。端末装置202では、パケットを受信すると、サービス層において、TCP/IPヘッダが取り除かれ、また、SOBAヘッダが確認された後に該SOBAヘッダが取り除かれる。そして、サービス層は、部品アプリケーションヘッダを確認し、該当する部品アプリケーションに対して部品アプリケーションヘッダおよび部品アプリケーションにおいて部品アプリケーションデータおよび部品アプリケーションデータを送信する。部品アプリケーション層では、受信した部品アプリケーションヘッダおよび部品アプリケーションデータに基づいて状態変更イベントを認識し、これに応じた処理を行う。画面共有アプリケーションデータ、および、セッションコントロールデータについても、同様の処理が行われる。
以上のようなSOBAシステムを、図1に示すテレビ会議システム1の各端末装置2〜5に搭載することによって各種機能を実現することが可能となる。
(ソフトウェアによる構成例)
最後に、端末装置5が備える各ブロック、特に、入出力制御部9、キャッシュ制御部10、映像キャッシュ部11、音声キャッシュ部12、映像再生部13、音声再生部14、およびテレビ会議GUI15などの各機能ブロックは、ハードウェアロジックによって構成してもよいし、次のようにCPUを用いてソフトウェアによって実現してもよい。
すなわち、上記端末装置5は、各機能ブロックを実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記端末装置5に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、上記端末装置5を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。