以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
本発明によれば、送信装置が提供される。この送信装置(例えば、図1のサーバ12)は、復号に欠くことのできない最下位の階層(例えば、図8で示される1番目の階層)から、より品質の高い復号をするためのより上位の階層(例えば、図8で示される5番目の階層)までの送信データの階層のうち、送信する送信データの最も上位の階層を選択する選択手段(例えば、図5の送信階層選択部136)と、送信している送信データの最も上位の階層を示す情報と、階層符号化における送信データの階層の数を示す情報とを相手に送信する送信手段(例えば、図5のUDP通信部134)とを備える。
この送信装置は、送信している送信データの最も上位の階層を示す情報(例えば、図12で示される送信階層)と、階層符号化における送信データの階層の数を示す情報(例えば、図12で示される最大階層)とを含む送信データを生成する生成手段(例えば、図5のパケタイザ132)をさらに設け、送信手段(例えば、図5のUDP通信部134)が、生成された送信データを送信するようにすることができる。
この送信装置は、送信する送信データの最も上位の階層の変更を要求する、変更要求を受信する受信手段(例えば、図5のTCP通信部135)をさらに設け、選択手段(例えば、図5の送信階層選択部136)が、受信された変更要求を基に、送信する送信データの最も上位の階層を選択するようにすることができる。
この送信装置は、自分と送信データを送信する相手との、通信網の帯域を取得する取得手段(例えば、図9のステップS33の処理を行うTCP通信部135)をさらに設け、選択手段(例えば、図5の送信階層選択部136)が、通信網の帯域を基に、送信する送信データの最も上位の階層を選択するようにすることができる。
この送信装置は、送信手段(例えば、図9のステップS32の処理を行うUDP通信部134)が、通信網の帯域を相手に算出させるためのパケットを送信し、取得手段(例えば、図9のステップS33の処理を行うTCP通信部135)が、相手からの通知を基に、通信網の帯域を取得するようにすることができる。
また、本発明によれば、送信方法が提供される。この送信方法は、復号に欠くことのできない最下位の階層から、より品質の高い復号をするためのより上位の階層までの送信データの階層のうち、送信する送信データの最も上位の階層を選択する選択ステップ(例えば、図9のステップS34の処理)と、送信している送信データの最も上位の階層を示す情報と、階層符号化における送信データの階層の数を示す情報との相手への送信を制御する送信制御ステップ(例えば、図11のステップS79の処理)とを含む。
また、本発明によれば、プログラムが提供される。このプログラムは、復号に欠くことのできない最下位の階層から、より品質の高い復号をするためのより上位の階層までの送信データの階層のうち、送信する送信データの最も上位の階層を選択する選択ステップ(例えば、図9のステップS34の処理)と、送信している送信データの最も上位の階層を示す情報と、階層符号化における送信データの階層の数を示す情報との相手への送信を制御する送信制御ステップ(例えば、図11のステップS79の処理)とをコンピュータに実行させる。
このプログラムは、記録媒体(例えば、図4の磁気ディスク111)に記録することができる。
本発明によれば、受信装置が提供される。この受信装置(例えば、図1のクライアント14)は、送信されてくる送信データの最も上位の階層を示す情報(例えば、図12で示される送信階層)と、階層符号化における送信データの階層の数を示す情報(例えば、図12で示される最大階層)とを受信する受信手段(例えば、図6のUDP通信部151)と、送信されてくる送信データの最も上位の階層を示す情報、および階層符号化における送信データの階層の数を示す情報の少なくとも一方の表示を制御する表示制御手段(例えば、図6の出力部87)とを備える。
この受信装置は、送信されてくる送信データの最も上位の階層の変更を要求する、変更要求を生成する生成手段(例えば、図6の階層変更要求部160)と、生成された変更要求を相手に送信する送信手段(例えば、図6のTCP通信部158)とをさらに設けることができる。
この受信装置は、送信データを送信してくる相手が通信網を介して送信してくるパケットであって、受信したパケットを基に、相手と自分との通信網の帯域を算出する算出手段(例えば、図6の帯域算出部157)と、算出した通信網の帯域の通知を相手に送信する送信手段(例えば、図10のステップS55の処理を行うTCP通信部158)とをさらに設けることができる。
この受信装置は、受信した送信データを基に、相手と自分との通信網の帯域を算出する算出手段(例えば、図6の帯域算出部157)をさらに設け、表示制御手段(例えば、図6の出力部87)が、算出された通信網の帯域の表示をさらに制御するようにすることができる。
この受信装置は、受信した送信データのロス率を算出する算出手段(例えば、図6のストリーム情報算出部155)をさらに設け、表示制御手段(例えば、図6の出力部87)が、算出されたロス率の表示をさらに制御するようにすることができる。
この受信装置は、受信された測定パケットを基に、相手と自分との通信網の帯域を算出する算出手段(例えば、図6の帯域算出部157)をさらに設け、受信手段(例えば、図10のステップS51の処理を行うTCP通信部158)が、送信データを送信してくる相手が通信網を介して送信してくる、通信網の帯域を測定するための測定パケットをさらに受信し、表示制御手段(例えば、図6の出力部87)が、算出された通信網の帯域の表示をさらに制御するようにすることができる。
また、本発明によれば、受信方法が提供される。この受信方法は、送信されてくる送信データの最も上位の階層を示す情報と、階層符号化における送信データの階層の数を示す情報との受信を制御する受信制御ステップ(例えば、図15のステップS121の処理)と、送信されてくる送信データの最も上位の階層を示す情報、および階層符号化における送信データの階層の数を示す情報の少なくとも一方の表示を制御する表示制御ステップ(例えば、図15のステップS132の処理)とを含む。
また、本発明によれば、プログラムが提供される。このプログラムは、送信されてくる送信データの最も上位の階層を示す情報と、階層符号化における送信データの階層の数を示す情報との受信を制御する受信制御ステップ(例えば、図15のステップS121の処理)と、送信されてくる送信データの最も上位の階層を示す情報、および階層符号化における送信データの階層の数を示す情報の少なくとも一方の表示を制御する表示制御ステップ(例えば、図15のステップS132の処理)とをコンピュータに実行させる。
このプログラムは、記録媒体に記録することができる。
本発明は、例えば、インターネット電話、遠隔テレビ会議システム、ライブ映像ストリーミング配信システム、またはテレビ電話などのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
図1は、本発明を適用したストリーミング配信システムの一実施の形態を示す図である。このストリーミング配信システムにおいては、インターネットなどの通信網13に、サーバ12およびクライアント14が接続されている。
ビデオカメラ11は、画像を撮像して、撮像した画像に対応する画像データをサーバ12に供給する。例えば、ビデオカメラ11は、動画像を撮像して、動画像に対応する画像データをサーバ12に供給する。
画像データは、ストリーミングデータの一例である。ストリーミングデータは、音声のデータ、またはリアルタイム制御データなど、時間の経過に対応して順次送信または受信が要求されるデータであればよい。
サーバ12は、通信網13の帯域を測定するための帯域測定パケットを、通信網13を介して、クライアント14あてに送信する。また、サーバ12は、クライアント14から送信されてくる帯域測定結果を受信する。ここで、帯域とは、サーバ12とクライアント14とを接続する通信網13における伝送レート、すなわち単位時間に伝送可能なデータ量をいう。
サーバ12は、ビデオカメラ11から供給された画像データを階層符号化し、階層符号化することによって階層化された各階層の画像データと、階層情報とを各階層に対応するパケットのそれぞれに格納する。ここで、階層情報とは、階層化された画像データの階層の数を示す最大階層情報と、送信される画像データの階層のうち、最上位の階層(以下、送信階層と称する)を示す送信階層情報とからなる。また、以下、階層化された画像データの階層のうち、最上位の階層を最大階層と称する。
なお、ビデオカメラ11から供給された画像データは、復号に欠くことのできない最下位の階層から、より品質の高い復号をするための最上位の階層までの複数の階層に階層化される。また、復号に欠くことのできない画像データの階層が、最下位の階層であり、より品質の高い復号をするための画像データの階層が、最上位の階層であると説明したが、復号に欠くことのできない画像データの階層を、最上位の階層とし、より品質の高い復号をするための画像データの階層を最下位の階層とするようにしてもよい。
サーバ12は、受信した帯域測定結果を基に、送信階層を選択し、選択した送信階層を基に、最下位の階層である1番目の階層から、送信階層までの階層のそれぞれに対応するパケットのそれぞれを、通信網13を介して、クライアント14あてに送信する。
通信網13は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、サーバ12から送信されたパケットをクライアント14まで伝送する。
サーバ12は、クライアント14から送信されてきた変更要求を受信し、受信した変更要求を基に、送信階層を変更する。
クライアント14は、通信網13を介してサーバ12から送信されてきた各種のパケットを受信する。
クライアント14は、サーバ12から送信されてきた帯域測定パケットを受信する。クライアント14は、受信した帯域測定パケットを基に、通信網13の帯域を算出し、算出した帯域を帯域測定結果として、通信網13を介して、サーバ12あてに送信する。
クライアント14は、サーバ12から送信されてきた、画像データが格納されているパケットを受信する。クライアント14は、受信したパケットから、階層情報を抽出し、抽出した階層情報を、出力部(図示せず)に表示させる。クライアント14は、送信階層の変更を要求する、変更要求を生成し、生成した変更要求を、通信網13を介して、サーバ12あてに送信する。
次に、図2のタイムチャートを参照して、サーバ12における、帯域測定の処理および送信階層の変更の処理の例を説明する。
図2において、横軸は時間を示し、帯域測定パケット31は、例えば、通信網13の帯域を測定するための、等しいパケットサイズのパケット41−1およびパケット41−2から構成される。また、例えば、フレーム32を再生するための画像データであるストリーミングデータは、パケット42−1乃至パケット42−3に格納されて送信され、フレーム33を再生するための画像データであるストリーミングデータは、パケット43−1乃至パケット43−3に格納されて送信され、フレーム34を再生するための画像データであるストリーミングデータは、パケット44−1乃至パケット44−4に格納されて送信される。
時刻t1において、サーバ12は、通信網13の帯域を測定するためのパケット41−1を、通信網13を介して、クライアント14あてに送信する。同様に、時刻t2において、サーバ12は、通信網13の帯域を測定するためのパケット41−2を、通信網13を介して、クライアント14あてに送信する。パケット41−1およびパケット41−2は、時間間隔をおかずに、続けて(連続して)クライアント14あてに送信される。
時刻t11において、クライアント14は、サーバ12から送信されてきたパケット41−1を受信し、時刻t12において、クライアント14は、サーバ12から送信されてきたパケット41−2を受信する。クライアント14は、パケット41−1およびパケット41−2を受信すると、受信したパケット41−1およびパケット41−2を基に、通信網13の帯域を算出する。なお、帯域の測定についての詳細は、後述する。
時刻t13において、クライアント14は、算出した帯域の測定結果である帯域測定結果を、通信網13を介して、サーバ12あてに送信する。
時刻t3において、サーバ12は、クライアント14から送信されてきた帯域測定結果を受信する。サーバ12は、帯域測定結果を受信すると、受信した帯域測定結果を基に、クライアント14に送信する、画像データが格納されたパケットの送信階層を選択する。
サーバ12は、画像データを所定の数の階層に階層符号化し、階層化された各階層の画像データのそれぞれを、各階層に対応するパケットのそれぞれに格納する。サーバ12は、送信階層を基に、1番目の階層から送信階層までの階層のそれぞれに対応するパケットのそれぞれを、通信網13を介して、クライアント14あてに送信する。
例えば、サーバ12は、1つのフレームを再生するための画像データを、最下位の階層である1番目の階層から、最上位の階層である4番目の階層までの4つの階層に階層化する。1番目の階層の画像データは、低解像度の画像データを復号するためのデータであり、2番目の階層の画像データは、1番目の階層の画像データとともに復号した場合、1番目の階層の画像データより、解像度が高い画像が得られる画像データである。
ここで、最下位の階層の画像データである1番目の階層の画像データを復号した場合、低解像度の画像を表示させる画像データを得ることができるが、より上位の階層の画像データ、例えば、2番目の階層の画像データだけを復号しても、画像を表示させる画像データを得ることはできない。すなわち、最下位の階層の画像データは、復号に欠くことのできない画像データであり、最下位の階層より上位の階層の画像データは、その画像データ(2番目の階層以上の画像データ)だけを復号しても画像を表示させる画像データを得ることはできず、自分自身と自分より下位の階層の画像データとをともに復号した場合に、画像を表示させる画像データを得ることができる。
また、3番目の階層の画像データは、1番目の階層の画像データおよび2番目の階層の画像データとともに復号した場合、1番目の階層の画像データおよび2番目の階層の画像データを復号して得られる画像より、解像度が高い画像が得られる画像データであり、4番目の階層の画像データは、1番目の階層の画像データ、2番目の階層の画像データ、および3番目の階層の画像データとともに復号した場合、最も解像度が高い、階層符号化前の画像に近い解像度の画像が得られる画像データである。
すなわち、階層符号化により、画像データが、1番目の階層から4番目の階層までの4つの階層に階層化された場合、1番目の階層は、画像データの復号に欠くことのできない最下位の階層であり、2番目の階層は、1番目の階層より1つ上位の階層であり、3番目の階層は、2番目の階層より1つ上位の階層であり、4番目の階層は、最も品質の高い復号をするための最上位の階層である。
したがって、例えば、送信階層として、3番目の階層が選択された場合、サーバ12は、1番目の階層に対応するパケット、2番目の階層に対応するパケット、および3番目の階層に対応するパケットを、通信網13を介して、クライアント14あてに送信する。
なお、ここでは、復号時の解像度を優先して、階層符号化する場合の例について説明したが、その他、画像の空間的位置や色成分を優先して、階層符号化することも可能である。
時刻t4において、サーバ12は、選択した送信階層を基に、パケット42−1乃至パケット42−3を、通信網13を介して、クライアント14あてに送信する。同様に、サーバ12は、パケット43−1乃至パケット43−3を、通信網13を介して、クライアント14あてに送信する。
クライアント14は、サーバ12から送信されてきたパケット42−1乃至パケット42−3、およびパケット43−1乃至パケット43−3を受信する。
時刻t14において、クライアント14は、送信階層の変更を要求する、変更要求を、通信網13を介して、サーバ12あてに送信する。
時刻t5において、サーバ12は、クライアント14から送信されてきた変更要求を受信する。サーバ12は、受信した変更要求を基に、送信階層を変更し、変更された送信階層を基に、パケット44−1乃至パケット44−4を、通信網13を介して、クライアント14あてに送信する。クライアント14は、サーバ12から送信されてきたパケット44−1乃至パケット44−4を受信する。
このようにして、サーバ12は、帯域に応じて送信階層を選択し、選択した送信階層を基に、画像データが格納されているパケットをクライアント14あてに送信する。
図3は、帯域の測定を説明する図である。
帯域を測定する方法として、パケットペアと呼ばれる方法がある。この方法においては、サーバ12が、通信網13を介して、クライアント14あてに、等しいパケットサイズのパケットを、送信間隔を空けずに、いわゆるバックトゥーバック(back−to−back)で送信することによって、通信網13の伝送遅延を基に、サーバ12と、クライアント14との、通信網13のボトルネックリンクの帯域が測定される。このボトルネックリンクの帯域が、通信網13の伝送速度である帯域である。
ここで、等しいパケットサイズのパケットをバックトゥーバックで送信するとは、2つのパケットを、時間間隔をおかずに、連続して送信することをいう。また、このように、パケットを連続して送信する場合、テイルトゥーノーズ(tail−to−nose)で送信するとも称する。
図3において、縦軸は、時間を示す。時刻t31において、サーバ12は、パケット41−1を、通信網13を介してクライアント14あてに送信する。また、時刻t32において、サーバ12は、パケット41−2を、通信網13を介してクライアント14あてに送信する。
サーバ12から送信されたパケット41−1およびパケット41−2は、通信網13におけるノード61−1およびノード61−2を介して、クライアント14に受信される。
時刻t33において、クライアント14は、サーバ12から送信されてきたパケット41−1を受信する。また、時刻t34において、クライアント14は、サーバ12から送信されてきたパケット41−2を受信する。
ノード61−1とノード61−2との間の伝送速度が遅い場合、サーバ12から送信間隔を空けずに送信されたパケット41−1およびパケット41−2が、ノード61−1からノード61−2の区間で、時間軸方向に伸ばされていることが分かる。したがって、通信網13において、ノード61−1からノード61−2までの区間は、サーバ12からクライアント14までの区間において、パケットの伝送帯域が最も低い、ボトルネックリンクであることが分かる。
クライアント14は、受信したパケット41−1およびパケット41−2の受信時刻を基に、ボトルネックリンクの帯域、すなわち帯域を算出する。帯域は、式(1)より算出される。
(帯域)=S1/(t34−t33) ・・・(1)
ここで、S1は、41−2のパケットサイズ(パケットの大きさ)を表す。
このようにして、クライアント14は、サーバ12から送信されてきた帯域測定パケットを基に、帯域を算出する。
図4は、サーバ12の構成の例を示すブロック図である。CPU(Central Processing Unit)81は、ROM(Read Only Memory)82、または記録部88に記録されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)83には、CPU81が実行するプログラムやデータなどが適宜記憶される。これらのCPU81、ROM82、およびRAM83は、バス84により相互に接続されている。
CPU81にはまた、バス84を介して入出力インタフェース85が接続されている。入出力インタフェース85には、キーボード、マウス、スイッチなどよりなる入力部86、ディスプレイ、スピーカ、ランプなどよりなる出力部87が接続されている。CPU81は、入力部86から入力される指令に対応して各種の処理を実行する。
入出力インタフェース85に接続されている記録部88は、例えばハードディスクなどで構成され、CPU81が実行するプログラムや各種のデータを記録する。通信部89は、インターネット、その他のネットワークなどの通信網13を介して、クライアント14などの外部の装置と通信する。
また、通信部89を介してプログラムを取得し、記録部88に記録してもよい。
入出力インタフェース85に接続されているドライブ90は、磁気ディスク111、光ディスク112、光磁気ディスク113、或いは半導体メモリ114などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部88に転送され、記録される。
なお、クライアント14は、サーバ12と同様に構成されるので、その説明は省略する。
図5は、サーバ12の機能の構成を示すブロック図である。
サーバ12は、エンコーダ131、パケタイザ132、バッファ133、UDP通信部134、TCP通信部135、送信階層選択部136、コンテンツ階層保持部137、送信階層情報保持部138、および階層処理部139を含むように構成される。
エンコーダ131は、ビデオカメラ11から供給されたストリーミングデータの一例である画像データを、コンテンツ階層保持部137に保持(記録)されているコンテンツ階層テーブルを参照して、所定の方式により周波数帯域ごとに階層符号化する。エンコーダ131は、階層符号化した画像データをパケタイザ132に供給する。
ここで、コンテンツ階層テーブルには、画像データを階層化する階層の数と、各階層に対応する画像データを、通信網13を介して伝送するために必要な伝送帯域である、必要帯域とが対応して(関係付けられて)記録されている。コンテンツ階層テーブルの詳細は、後述する。
なお、エンコーダ131は、コンテンツ階層テーブルを参照せずに階層符号化するようにしてもよい。この場合、エンコーダ131は、階層化された画像データの階層の数および各階層の必要帯域を示す情報を、コンテンツ階層保持部137に供給する。
パケタイザ132は、階層処理部139から階層情報を取得する。パケタイザ132は、階層処理部139から取得した階層情報およびエンコーダ131から供給された画像データを、RTP方式のパケットに格納することにより、RTPパケットを生成する。パケタイザ132は、生成したRTPパケットをバッファ133に供給する。
より詳細には、パケタイザ132は、階層符号化された、1つの階層に対応する画像データ、RTPパケットに格納される画像データの階層を示す情報、最大階層情報、および送信階層情報を1つのRTPパケットに格納することにより、各階層に対応するRTPパケットのそれぞれを生成する。パケタイザ132は、生成した各階層に対応するRTPパケットのそれぞれを、バッファ133に供給する。
なお、パケタイザ132は、1番目の階層から送信階層までの階層の画像データのそれぞれを、1つのRTPパケットに格納するようにしてもよい。この場合、パケタイザ132は、階層符号化された、1番目の階層から送信階層までの階層の画像データのそれぞれ、最大階層情報、および送信階層情報を1つのRTPパケットに格納することにより、RTPパケットを生成する。パケタイザ132は、生成した各階層に対応するRTPパケットを、バッファ133に供給する。
バッファ133は、階層処理部139の制御のもと、パケタイザ132から供給されたRTPパケットのうち、1番目の階層から送信階層までの階層に対応するRTPパケットのそれぞれをUDP通信部134に供給する。バッファ133は、UDP通信部134に供給しないRTPパケットを破棄する。
UDP通信部134は、通信網13を介して、各種のデータの送信を行う。UDP通信部134は、UDPに従って、データの送受信を行う。
UDP通信部134は、バッファ133から供給されたRTPパケットおよび送信階層選択部136から供給された帯域測定パケットを、通信網13を介してクライアント14あてに送信する。
TCP通信部135は、通信網13を介して、各種のデータの送受信を行う。TCP通信部135は、IETF RFC793で規定されているプロトコルであるTCP(Transmission Control Protocol)に従って、データの送受信を行う。
TCP通信部135は、コンテンツ階層保持部137から供給されたコンテンツ階層テーブルを、通信網13を介してクライアント14あてに送信する。また、TCP通信部135は、クライアント14から送信されてきた変更要求を受信し、受信した変更要求を階層処理部139に供給する。TCP通信部135は、クライアント14から送信されてきた帯域測定結果を受信し、受信した帯域測定結果を、送信階層選択部136に供給する。
なお、UDP通信部134およびTCP通信部135は、通信部89を制御して、通信部89を介することにより、データの送受信を行う。
送信階層選択部136は、通信網13の帯域を測定するための帯域測定パケットを生成し、生成した帯域測定パケットをUDP通信部134に供給する。
送信階層選択部136は、TCP通信部135から供給された帯域測定結果およびコンテンツ階層保持部137に記録されているコンテンツ階層テーブルを基に、送信階層を選択し、送信階層情報を生成する。送信階層選択部136は、生成した送信階層情報を送信階層情報保持部138に供給する。
コンテンツ階層保持部137は、コンテンツ階層テーブルを保持(記録)している。コンテンツ階層保持部137は、コンテンツ階層テーブルをエンコーダ131、TCP通信部135、送信階層選択部136、および階層処理部139に供給する。
また、コンテンツ階層保持部137は、エンコーダ131から、階層化された画像データの階層の数および各階層の必要帯域を示す情報が供給された場合、供給された、階層化された画像データの階層の数および各階層の必要帯域を示す情報を基に、コンテンツ階層テーブルを生成し、生成したコンテンツ階層テーブルを記録する。
送信階層情報保持部138は、送信階層選択部136または階層処理部139から供給された送信階層情報を保持(記憶)する。送信階層情報保持部138は、記憶している送信階層情報を階層処理部139に供給する。
階層処理部139は、送信階層情報保持部138から供給された送信階層情報およびコンテンツ階層保持部137から供給されたコンテンツ階層テーブルを基に、階層情報を生成し、生成した階層情報をパケタイザ132に供給する。
階層処理部139は、バッファ133を制御して、生成した階層情報を基に、1番目の階層から送信階層までの階層のそれぞれに対応するRTPパケットのそれぞれをUDP通信部134に供給させる。
階層処理部139は、TCP通信部135から供給された変更要求を基に、送信階層情報を生成し、生成した送信階層情報を送信階層情報保持部138に供給する。
図6は、クライアント14の機能の構成を示すブロック図である。
クライアント14は、入力部86、出力部87、UDP通信部151、RTP処理部152、デコーダ153、合成部154、ストリーム情報算出部155、階層情報保持部156、帯域算出部157、TCP通信部158、コンテンツ階層保持部159、および階層変更要求部160を含むように構成される。
UDP通信部151は、サーバ12のUDP通信部134に対応し、通信網13を介して、各種のデータの受信を行う。UDP通信部151は、UDPに従って、データの送受信を行う。
UDP通信部151は、サーバ12から送信されてきた帯域測定パケットを受信し、受信した帯域測定パケットを帯域算出部157に供給する。
また、UDP通信部151は、サーバ12から送信されてきたRTPパケットを受信し、受信したRTPパケットをRTP処理部152に供給する。
RTP処理部152は、UDP通信部151から供給されたRTPパケットから画像データを抽出し、抽出した画像データをデコーダ153に供給する。また、RTP処理部152は、UDP通信部151から供給されたRTPパケットから階層情報を抽出し、抽出した階層情報を階層情報保持部156に供給する。
RTP処理部152は、UDP通信部151から供給されたRTPパケットからシーケンス番号を抽出し、抽出したシーケンス番号、RTPパケットの受信時刻、およびRTPパケットのパケットサイズ(RTPパケットの大きさ)をストリーム情報算出部155に供給する。
デコーダ153は、RTP処理部152から供給された画像データを、エンコーダ131に対応する復号方式で復号し、復号した画像データを合成部154に供給する。
より詳細には、デコーダ153は、RTP処理部152から供給された1番目の階層から送信階層までの階層のそれぞれの画像データを、エンコーダ131に対応する復号方式で1つの画像データに復号し、復号した画像データを合成部154に供給する。
合成部154は、デコーダ153から供給された画像データおよび階層情報保持部156から供給された階層情報を表示させる画像データを合成(重畳)し、重畳した画像データを出力部87に供給する。
なお、合成部154は、ストリーム情報算出部155からRTPパケットのロス率を表示させる画像データおよび受信帯域を表示させる画像データを取得し、帯域算出部157から帯域測定結果を表示させる画像データを取得するようにしてもよい。
この場合、合成部154は、デコーダ153から供給された画像データ、階層情報保持部156から供給された階層情報を表示させる画像データ、ストリーム情報算出部155から取得したRTPパケットのロス率を表示させる画像データおよび受信帯域を表示させる画像データ、並びに帯域算出部157から取得した帯域測定結果を表示させる画像データを重畳し、重畳した画像データを出力部87に供給する。
また、合成部154は、階層情報保持部156から階層情報を表示させる画像データを取得せずに、デコーダ153から供給された画像データだけを出力部87に供給するようにしてもよい。
ストリーム情報算出部155は、RTP処理部152から供給されたシーケンス番号を基に、UDP通信部151が受信したRTPパケットのロス率を算出する。また、ストリーム情報算出部155は、RTP処理部152から供給されたRTPパケットの受信時刻およびRTPパケットのパケットサイズを基に、通信網13の受信帯域を算出する。
ここで、受信帯域とは、UDP通信部151がRTPパケット受信した時刻における、通信網13の帯域をいう。なお、通信網13の受信帯域の算出についての詳細は、後述する。
ストリーム情報算出部155は、算出したRTPパケットのロス率を基に、RTPパケットのロス率を表示させる画像データを生成し、生成した画像データを出力部87に供給する。また、ストリーム情報算出部155は、算出した受信帯域を基に、通信網13の受信帯域を表示させる画像データを生成し、生成した画像データを出力部87に供給する。なお、ストリーム情報算出部155は、生成したRTPパケットのロス率を表示させる画像データおよび通信網13の受信帯域を表示させる画像データを、出力部87に供給せずに、合成部154に供給するようにしてもよい。
階層情報保持部156は、RTP処理部152から供給された階層情報を保持(記憶)する。階層情報保持部156は、RTP処理部152から供給された階層情報を基に、階層情報を表示させる画像データを生成し、生成した画像データを合成部154に供給する。階層情報保持部156は、RTP処理部152から供給された階層情報を、階層変更要求部160に供給する。
なお、階層情報保持部156は、生成した階層情報を表示させる画像データを、合成部154に供給せずに、出力部87に供給するようにしてもよい。
階層情報保持部156は、送信階層情報保持部181および最大階層情報保持部182を含むように構成される。
階層情報保持部156の送信階層情報保持部181は、RTP処理部152から供給された階層情報の送信階層情報を記憶する。階層情報保持部156の最大階層情報保持部182は、RTP処理部152から供給された階層情報の最大階層情報を記憶する。
帯域算出部157は、UDP通信部151から供給された帯域計測パケットを基に、通信網13の帯域を算出する。
帯域算出部157は、算出した帯域を基に、帯域測定結果を生成し、生成した帯域測定結果を、TCP通信部158および出力部87に供給する。
より詳細には、帯域算出部157は、算出した帯域を基に、帯域測定結果を生成し、生成した帯域測定結果をTCP通信部158に供給する。そして、帯域算出部157は、生成した帯域結果を表示させる画像データを生成し、生成した画像データを出力部87に供給する。
なお、帯域算出部157は、生成した帯域結果を表示させる画像データを、出力部87に供給せずに、合成部154に供給するようにしてもよい。
TCP通信部158は、サーバ12のTCP通信部135に対応し、通信網13を介して、各種のデータの送受信を行う。TCP通信部158は、TCPに従って、データの送受信を行う。
TCP通信部158は、サーバ12から送信されてきたコンテンツ階層テーブルを受信し、受信したコンテンツ階層テーブルをコンテンツ階層保持部159に供給する。
TCP通信部158は、帯域算出部157から供給された帯域測定結果を、通信網13を介して、サーバ12あてに送信する。TCP通信部158は、階層変更要求部160から供給された変更要求を、通信網13を介して、サーバ12あてに送信する。
なお、UDP通信部151およびTCP通信部158は、通信部(図示せず)を制御して、通信部を介することにより、データの送受信を行う。
コンテンツ階層保持部159は、TCP通信部158から供給されたコンテンツ階層テーブルを保持(記憶)する。コンテンツ階層保持部159は、TCP通信部158から供給されたコンテンツ階層テーブルを基に、コンテンツ階層テーブルを表示させる画像データを生成し、生成した画像データを出力部87に供給する。
出力部87は、合成部154から供給された画像データ、ストリーム情報算出部155から供給されたRTPパケットのロス率を表示させる画像データおよび受信帯域を表示させる画像データ、帯域算出部157から供給された帯域測定結果を表示させる画像データ、並びにコンテンツ階層保持部159から供給されたコンテンツ階層テーブルを表示させる画像データを、ディスプレイである出力部87に出力し、画像、ロス率、受信帯域、帯域測定結果、およびコンテンツ階層テーブルを表示させる。
入力部86は、ユーザが、入力部86を操作することによって、送信階層の変更を指示した場合、変更信号を生成し、生成した変更信号を階層変更要求部160に供給する。
より詳細には、入力部86は、ユーザが、入力部86を操作することによって、送信階層を、設定されている階層の1つ上位の階層に変更する旨の指示をした場合、送信階層を1つ上位の階層に変更する旨の変更信号を生成し、生成した変更信号を階層変更要求部160に供給する。また、入力部86は、ユーザが、入力部86を操作することによって、送信階層を、設定されている階層の1つ下位の階層に変更する旨の指示をした場合、送信階層を1つ下位の階層に変更する旨の変更信号を生成し、生成した変更信号を階層変更要求部160に供給する。
ここで、設定されている階層の1つ上位の階層とは、例えば、設定されている階層が、3番目の階層である場合、4番目の階層をいい、同様に、設定されている階層の1つ下位の階層とは、例えば、設定されている階層が、3番目の階層である場合、2番目の階層をいう。
なお、ユーザが、所望の送信階層を、入力部86に入力することによって、送信階層の変更を指示するようにしてもよい。この場合、入力部86は、ユーザによって入力された送信階層を示す情報を生成し、生成した送信階層を示す情報を、階層変更要求部160に供給する。
階層変更要求部160は、階層情報保持部156から供給された階層情報および入力部86から供給された変更信号を基に、変更要求を生成し、生成した変更要求をTCP通信部158に供給する。
より詳細には、階層変更要求部160は、入力部86から、送信階層を1つ上位の階層に変更する旨の変更信号が供給された場合、階層情報保持部156から供給された階層情報が示す送信階層の1つ上位の階層を、送信階層にする旨の変更要求を生成し、生成した変更要求をTCP通信部158に供給する。
また、階層変更要求部160は、入力部86から、送信階層を1つ下位の階層に変更する旨の変更信号が供給された場合、階層情報保持部156から供給された階層情報が示す送信階層の1つ下位の階層を、送信階層にする旨の変更要求を生成し、生成した変更要求をTCP通信部158に供給する。
なお、階層変更要求部160は、入力部86から送信階層を示す情報が供給された場合、送信階層を示す情報によって指示された階層を送信階層にする旨の変更要求を生成し、生成した変更要求をTCP通信部158に供給する。
次に、図7のフローチャートを参照して、サーバプログラムを実行するサーバ12による、送信階層の変更の処理を説明する。
ステップS11において、送信階層選択部136は、帯域測定の処理を行う。なお、帯域測定の処理の詳細は、後述するが、帯域測定の処理において、サーバ12とクライアント14との間の通信網13の帯域が測定され、測定された帯域を基に、送信階層が選択される。
ステップS12において、コンテンツ階層保持部137は、記録しているコンテンツ階層テーブルをTCP通信部135に供給する。より詳細には、ステップS12において、コンテンツ階層保持部137は、記録しているコンテンツ階層テーブルをTCPに従ったパケットに格納し、コンテンツ階層テーブルを格納したパケットをTCP通信部135に供給する。
ここで、コンテンツ階層テーブルは、例えば、図8で示される、階層と必要帯域を表すテーブルである。コンテンツ階層テーブルには、ビデオカメラ11から供給された画像データが階層化される階層と、階層化された各階層の画像データを送信するために必要な、通信網13の帯域である必要帯域とが記録されている。
図8で示されるコンテンツ階層テーブルを基に符号化した場合、ビデオカメラ11から供給された画像データは、最下位の階層である1番目の階層の符号化された画像データ、1番目の階層の1つ上位の階層である2番目の階層の符号化された画像データ、2番目の階層の1つ上位の階層である3番目の階層の符号化された画像データ、3番目の階層の1つ上位の階層である4番目の階層の符号化された画像データ、および最上位の階層である5番目の階層の符号化された画像データに階層化される。
また、1番目の階層の画像データが格納されたRTPパケットを送信するためには、通信網13の帯域が、0.1Mbps以上必要であり、2番目の階層の画像データが格納されたRTPパケットを送信するためには、通信網13の帯域が、0.2Mbps以上必要であり、3番目の階層の画像データが格納されたRTPパケットを送信するためには、通信網13の帯域が、0.3Mbps以上必要である。さらに、4番目の階層の画像データが格納されたRTPパケットを送信するためには、通信網13の帯域が、0.4Mbps以上必要であり、5番目の階層の画像データが格納されたRTPパケットを送信するためには、通信網13の帯域が、0.5Mbps以上必要である。
図7の説明に戻り、ステップS13において、TCP通信部135は、コンテンツ階層保持部137から供給されたコンテンツ階層テーブルを、通信網13を介して、クライアント14あてに送信する。
ステップS14において、階層処理部139は、TCP通信部135が、クライアント14から送信されてきた変更要求を受信したか否かを判定する。ステップS14において、変更要求を受信したと判定された場合、ステップS15に進み、階層処理部139は、TCP通信部135が受信し、TCP通信部135から供給された変更要求を基に、送信階層を変更する。
より詳細には、ステップS15において、階層処理部139は、TCP通信部135が受信し、TCP通信部135から供給された変更要求を基に、送信階層情報を生成し、生成した送信階層情報を送信階層情報保持部138に供給する。そして、送信階層情報保持部138は、階層処理部139から供給された送信階層情報を記憶することによって、送信階層を変更する。
例えば、ステップS15において、階層処理部139は、TCP通信部135から供給された変更要求が、送信階層を4番目の階層に変更する旨の変更要求であった場合、送信階層が4番目の階層であることを示す送信階層情報を生成し、生成した送信階層情報を送信階層情報保持部138に供給し、送信階層情報保持部138は、階層処理部139から供給された送信階層が4番目の階層であることを示す送信階層情報を記憶する。
一方ステップS14において、変更要求を受信していないと判定された場合、送信階層を変更する必要がないので、ステップS15の処理はスキップされ、手続きは、ステップS16に進む。
ステップS16において、サーバ12の各部は、データ送信の処理を行う。なお、データ送信の処理の詳細は、後述するが、データ送信の処理において、ビデオカメラ11から供給された画像データが、階層符号化され、各階層の画像データのそれぞれが、各階層に対応するRTPパケットのそれぞれに格納される。そして、各階層に対応するRTPパケットのそれぞれは、通信網13を介して、クライアント14あてに送信される。
データ送信の処理が終了すると、手続きは、ステップS14に戻り、上述した処理を繰り返す。
このようにして、サーバ12は、クライアント14から送信されてきた変更要求を基に、送信階層の変更を行う。
図9のフローチャートを参照して、図7のステップS11の処理に対応する帯域測定の処理を説明する。
ステップS31において、送信階層選択部136は、帯域測定パケットを生成し、生成した帯域測定パケットをUDP通信部134に供給する。例えば、ステップS31において、送信階層選択部136は、帯域測定パケットであるパケットペアを生成し、生成したパケットペアをUDP通信部134に供給する。
ステップS32において、UDP通信部134は、送信階層選択部136から供給された帯域測定パケットを、通信網13を介して、クライアント14あてに送信する。
ステップS32において、クライアント14あてに送信された帯域測定パケットは、クライアント14に受信される。帯域測定パケットを受信したクライアント14は、受信した帯域測定パケットを基に、帯域測定結果を生成し、生成した帯域測定結果を、通信網13を介して、サーバ12あてに送信する。
ステップS33において、TCP通信部135は、クライアント14から送信されてきた帯域測定結果を受信し、受信した帯域測定結果を送信階層選択部136に供給する。
ステップS34において、送信階層選択部136は、TCP通信部135から供給された帯域測定結果およびコンテンツ階層保持部137に記録されているコンテンツ階層テーブルを基に、送信階層を選択する。そして、送信階層選択部136は、選択された送信階層を基に、送信階層情報を生成し、生成した送信階層情報を、送信階層情報保持部138に供給する。
例えば、ステップS34において、送信階層選択部136は、TCP通信部135から供給された帯域測定結果が示す帯域の測定結果が、0.35Mbpsであった場合、コンテンツ階層保持部137が記録している、図8で示されるコンテンツ階層テーブルを参照し、0.35Mbpsは、0.3Mbpsより大きく0.4Mbpsより小さいので、送信階層として、3番目の階層を選択する。そして、送信階層選択部136は、選択した送信階層を基に、送信階層が、3番目の階層であることを示す送信階層情報を生成し、生成した送信階層情報を送信階層情報保持部138に供給する。
ステップS35において、送信階層情報保持部138は、送信階層選択部136から供給された送信階層情報を保持(記憶)し、処理は、終了する。
このようにして、送信階層選択部136は、通信網13の帯域を測定する。
次に、図10のフローチャートを参照して、クライアントプログラムを実行する、クライアント14による帯域算出の処理を説明する。
ステップS51において、UDP通信部151は、サーバ12から送信されてきた帯域測定パケットを受信し、受信した帯域測定パケットを帯域算出部157に供給する。
ステップS52において、帯域算出部157は、UDP通信部151から供給された帯域測定パケットを基に、通信網13の帯域を算出する。例えば、ステップS52において、帯域算出部157は、UDP通信部151から供給された帯域測定パケットであるパケットペアの受信時刻およびパケットペアの1つのパケットのパケットサイズを、式(1)に代入することによって、通信網13の帯域を算出する。
ステップS53において、帯域算出部157は、算出した通信網13の帯域を基に、通信網13の帯域を示す、帯域測定結果を生成し、生成した帯域測定結果を、TCP通信部158および出力部87に供給する。
より詳細には、ステップS53において、帯域算出部157は、算出した通信網13の帯域を基に、帯域測定結果を生成し、生成した帯域測定結果をTCPに従うパケットに格納する。そして、帯域算出部157は、帯域測定結果を格納したパケットを、TCP通信部158に供給する。さらに、帯域算出部157は、生成した帯域測定結果を基に、帯域測定結果を表示させる画像データを生成し、生成した画像データを出力部87に供給する。
ステップS54において、出力部87は、帯域算出部157から供給された帯域測定結果を表示する画像データを、ディスプレイである出力部87に供給し、画像データを基に、画像をディスプレイに表示させる。
ステップS55において、TCP通信部158は、帯域算出部157から供給された帯域測定結果を、通信網13を介して、サーバ12あてに送信し、帯域算出の処理は、終了する。
このようにして、クライアント14は、サーバ12から送信されてきた帯域測定パケットを受信し、受信した帯域測定パケットを基に、通信網13の帯域を算出する。
図11のフローチャートを参照して、図7のステップS16の処理に対応するデータ送信の処理を説明する。
ステップS71において、サーバ12は、データ送信の処理に必要なデータを初期化する。例えばステップS71において、エンコーダ131は、内蔵しているタイマの値を0msにセットし、パケタイザ132は、タイムスタンプをよびシーケンス番号を初期化する。
ステップS72において、エンコーダ131は、内蔵しているタイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していないと判定された場合、ステップS72に戻り、タイマが終了したと判定されるまで、判定の処理を繰り返す。
ステップS72において、タイマが終了したと判定された場合、処理は、ステップS73に進む。
例えば、画像データのフレームの数が、1秒当たり30である場合、タイマが時間の経過に対応して値を増加させるとき、ステップS72において、エンコーダ131は、33msなどの所定の値とタイマの値とを比較することにより、タイマが終了したか否かを判定する。
例えば、ステップS71において、タイマの値を33msにセットし、タイマの値が、時間の経過に対応して値を減少させるとき、エンコーダ131は、タイマの値と、0msなどの所定の値とを比較することにより、タイマが終了したか否かを判定する。なお、この場合における、タイマの値と比較される0msまたは33msは、フレームの数が1秒当たり30である場合の例であり、本発明を限定するものではない。
ステップS73において、エンコーダ131は、ビデオカメラ11から供給された画像データを1フレーム分キャプチャする。例えば、ステップS73において、エンコーダ131は、ビデオカメラ11から供給された画像データを順次取得して、取得した画像データのうち、1フレーム分をキャプチャする。
ステップS74において、エンコーダ131は、コンテンツ階層保持部137に記録されているコンテンツ階層テーブルを参照して、所定の方式によりキャプチャした画像データを、周波数帯域ごとに階層符号化する。エンコーダ131は、階層符号化した画像データをパケタイザ132に供給する。
例えば、ステップS74において、エンコーダ131は、Motion JEPEG2000などの方式により階層符号化する。この場合、エンコーダ131は、コンテンツ階層保持部137に記録されているコンテンツ階層テーブルを参照し、階層符号化における、1番目の階層から各階層までの画像データのビットレートの合計が、コンテンツ階層テーブルに記録されている、各階層の必要帯域の値のそれぞれを超えないように階層符号化する。例えば、エンコーダ131は、キャプチャした画像データに、ウェーブレット変換を適用することによって、画像データを周波数帯域ごとに階層符号化する。
したがって、例えば、ステップS74において、図8で示されるコンテンツ階層テーブルを参照して、階層符号化を行う場合、エンコーダ131は、1番目の階層の画像データのビットレートが、0.1Mbpsとなるように符号化する。また、2番目の階層の画像データのビットレートは、1番目の階層の画像データのビットレートおよび2番目の階層の画像データのビットレートの合計が、2番目の階層の必要帯域の値と同じになるように符号化する。すなわち、1番目の階層の画像データのビットレートが0.1Mbpsであり、2番目の階層の必要帯域が0.2Mbpsであるので、2番目の階層の画像データのビットレートが、0.1Mbpsとなるように符号化する。
同様にして、エンコーダ131は、3番目の階層の画像データを、1番目の階層の画像データのビットレート乃至3番目の階層の画像データのビットレートの合計が、3番目の階層の必要帯域の値と同じになるように、0.1Mbpsで符号化し、4番目の階層の画像データを、1番目の階層の画像データのビットレート乃至4番目の階層の画像データのビットレートの合計が、4番目の階層の必要帯域の値と同じになるように、0.1Mbpsで符号化し、5番目の階層の画像データを、1番目の階層の画像データのビットレート乃至5番目の階層の画像データのビットレートの合計が、5番目の階層の必要帯域の値と同じになるように、0.1Mbpsで符号化する。
なお、エンコーダ131は、Motion JEPEG2000に限らず、MPEG4などの方式により、階層符号化するようにしてもよい。この場合、エンコーダ131は、キャプチャした画像データに、離散コサイン変換を適用することによって、画像データを周波数帯域ごとに階層符号化する。そして、エンコーダ131は、符号化における画像データの階層の数および各階層の必要帯域を示す情報をコンテンツ階層保持部137に供給する。コンテンツ階層保持部137は、供給された、階層化された画像データの階層の数および各階層の必要帯域を示す情報を基に、コンテンツ階層テーブルを生成し、生成したコンテンツ階層テーブルを記録する。
ステップS75において、階層処理部139は、コンテンツ階層保持部137に記録されているコンテンツ階層テーブルおよび送信階層情報保持部138から供給された送信階層情報を基に、階層情報を生成し、生成した階層情報をパケタイザ132に供給する。
ステップS76において、パケタイザ132は、エンコーダ131から供給された画像データおよび階層処理部139から供給された階層情報を基に、各階層に対応するRTPパケットを生成する。
より詳細には、ステップS76において、パケタイザ132は、エンコーダ131から供給された、各階層の画像データ、送信階層情報、最大階層情報、およびRTPパケットに格納される階層の画像データを示す情報を各階層に対応するRTPパケットのそれぞれに格納することによって、各階層に対応するRTPパケットのそれぞれを生成する。
したがって、例えば、送信階層が3番目の階層であり、最大階層が、5番目の階層である場合、パケタイザ132は、1番目の階層の画像データ、送信階層情報、最大階層情報、および1番目の階層の画像データが、RTPパケットに格納されていることを示す情報を1番目の階層に対応するRTPパケットに格納することによって、1番目の階層に対応するRTPパケットを生成し、2番目の階層の画像データ、送信階層情報、最大階層情報、および2番目の階層の画像データが、RTPパケットに格納されていることを示す情報を2番目の階層に対応するRTPパケットに格納することによって、2番目の階層に対応するRTPパケットを生成し、3番目の階層の画像データ、送信階層情報、最大階層情報、および3番目の階層の画像データが、RTPパケットに格納されていることを示す情報を3番目の階層に対応するRTPパケットに格納することによって、3番目の階層に対応するRTPパケットを生成する。同様に、4番目の階層の画像データ、送信階層情報、最大階層情報、および4番目の階層の画像データが、RTPパケットに格納されていることを示す情報を4番目の階層に対応するRTPパケットに格納することによって、4番目の階層に対応するRTPパケットを生成し、5番目の階層の画像データ、送信階層情報、最大階層情報、および5番目の階層の画像データが、RTPパケットに格納されていることを示す情報を5番目の階層に対応するRTPパケットに格納することによって、5番目の階層に対応するRTPパケットを生成する。
また、ステップS76において、パケタイザ132は、1番目の階層から送信階層までの階層の画像データのそれぞれを、1つのRTPパケットに格納するようにしてもよい。この場合、パケタイザ132は、1番目の階層から送信階層までの階層の画像データのそれぞれ、最大階層情報、および送信階層情報を、1つのRTPパケットに格納することにより、RTPパケットを生成する。
なお、RTPパケットは、クライアント14に送信する画像データを格納するパケットの一例である。
図12は、RTPパケットを説明する図である。RTPパケットの先頭には、図12において“V”で表される、2ビットのバージョン情報が配置される。バージョン情報は、RTPパケットのバージョンを示す。
バージョン情報の次に図12中の“P”で表される1ビットのパディングが配置され、パディングに続いて、1ビットの拡張情報がRTPパケットに配置される。拡張情報は図12において、“X”で表される。拡張情報は、拡張ヘッダの有無を表し、RTPパケットに拡張ヘッダを配置する場合に、所定の値に設定される。
拡張情報に続いて、CSRC(Contributing Source)カウントがRTPパケットに配置される。CSRCカウントは、図12中において、“CC”で表される。CSRCカウントは、CSRC識別子の数を表す。
CSRCカウントに続いて配置される、1ビットのメーカー情報は、プロファイルによって定義される。メーカー情報は、図12中において“m”で表される。
メーカー情報に続いて配置される、7ビットのペイロードタイプは、RTPパケットのフォーマットを定義するための情報である。ペイロードタイプは、図12中において、“PT”で表される。RTPパケットにおいて、ペイロードタイプは、33とされる。
シーケンス番号は、ペイロードタイプの次に配置される、16ビットの情報である。シーケンス番号は、RTPパケットの再生の順番を示す番号であり、送信の度に、1ずつ増える。シーケンス番号は、パケットロスを検出し、RTPパケットの順序を修復するために使用される。
シーケンス番号の次に配置される、32ビットのタイムスタンプは、そのRTPパケットに格納されているストリーミングデータの最初のオクテットがサンプルされた時刻を示す情報であり、タイムスタンプを基に、RTPパケットの展開時に処理時間の制御が実行され、リアルタイム画像、または音声の再生制御が行われる。また、同じフレームのストリーミングデータを格納しているRTPパケットには、共通のタイムスタンプが設定される。
SSRC(Synchronization Source)識別子は、タイムスタンプの次に配置される、32ビットの情報であって、RTPパケットに格納されるストリーミングデータのソースを示す。
RTPパケットにおいて、SSRC識別子の次には、RTPパケットに格納される、ストリーミングデータの送信階層を表す、送信階層情報が配置される、送信階層情報は、図12において、“送信階層”で表す。また、送信階層情報の次には、RTPパケットに格納される、ストリーミングデータの最大階層を表す、最大階層情報が配置される、最大階層情報は、図12において、“最大階層”で表す。
さらに、RTPパケットにおいて、最大階層情報の次には、RTPパケットに格納されているストリーミングデータの階層を表す、オリジナルデータの階層が配置される。オリジナルデータの階層は、図12において、“オリジナルデータの階層”で表される。
RTPパケットにおいて、オリジナルデータの階層の次には、ストリーミングデータが格納される。図12において、“Original Data”は、ストリーミングデータを示す。
図11のフローチャートの説明に戻り、ステップS77において、パケタイザ132は、生成した各階層に対応するRTPパケットのそれぞれを、バッファ133に供給し、ステップS78において、バッファ133は、階層処理部139の制御のもと、パケタイザ132から供給された、各階層に対応するRTPパケットのそれぞれのうち、1番目の階層から送信階層までの階層のそれぞれに対応するRTPパケットのそれぞれをUDP通信部134に供給し、UDP通信部134に供給しないRTPパケット、すなわち、送信階層より上位の階層に対応するRTPパケットを破棄する。
ステップS79において、UDP通信部134は、バッファ133から供給されたRTPパケットを、通信網13を介してクライアント14あてに送信し、ステップS80において、パケタイザ132は、RTPパケットに付加するタイムスタンプを更新する。
ステップS81において、エンコーダ131は、内蔵しているタイマをセットし、処理は、終了する。例えば、ステップS81において、エンコーダ131は、内蔵しているタイマの値を0msにセットする。
このようにして、サーバ12は、画像データをRTPパケットに格納し、画像データが格納されたRTPパケットを、通信網13を介して、クライアント14あてに送信する。
図13のフローチャートを参照して、クライアント14によるコンテンツ階層テーブル受信の処理を説明する。
ステップS101において、TCP通信部158は、サーバ12から送信されてきた、コンテンツ階層テーブルを受信し、受信したコンテンツ階層テーブルをコンテンツ階層保持部159に供給する。
ステップS102において、コンテンツ階層保持部159は、TCP通信部158から供給されたコンテンツ階層テーブルを記憶する。
ステップS103において、TCP通信部158から供給されたコンテンツ階層テーブルを基に、コンテンツ階層テーブルを表示させる画像データを生成し、生成したコンテンツ階層テーブルを表示させる画像データを出力部87に供給する。
ステップS104において、出力部87は、コンテンツ階層保持部159から供給されたコンテンツ階層テーブルを表示させる画像データを基に、コンテンツ階層テーブルを表示させ、コンテンツ階層テーブル受信の処理は終了する。
例えば、ステップS104において、出力部87は、コンテンツ階層保持部159から供給されたコンテンツ階層テーブルを表示させる画像データを基に、図14で示されるコンテンツ階層テーブルを、ディスプレイである出力部87に表示させる。
ディスプレイである出力部87には、ウィンドウ201が表示される。ウィンドウ201には、サーバ12から送信されてくる画像データが階層化された階層と、各階層の画像データのそれぞれを送信するために必要とされる、通信網13の必要帯域とを表す、コンテンツ階層テーブルが表示される。
また、ユーザが、入力部86を操作することによって、ディスプレイである出力部87に表示されているポインタ(図示せず)を、ボタン202上に移動させ、ボタン202がクリックされると、ウィンドウ201は、閉じられる。ここで、クリックとは、マウスの左ボタンを押圧して、離す操作をいう。
このようにして、クライアント14は、サーバ12から送信されてきたコンテンツ階層テーブルを受信し、受信したコンテンツ階層テーブルを表示させる。
次に、図15を参照して、クライアント14による変更要求の送信の処理を説明する。
ステップS121において、UDP通信部151は、サーバ12から送信されてきたRTPパケットを受信し、受信したRTPパケットをRTP処理部152に供給する。
ステップS122において、RTP処理部152は、UDP通信部151から供給されたRTPパケットから、階層情報を抽出し、抽出した階層情報を階層情報保持部156に供給する。
より詳細には、ステップS122において、RTP処理部152は、UDP通信部151から供給されたRTPパケットから、送信階層情報および最大階層情報を抽出し、抽出した送信階層情報および最大階層情報を、階層情報として、階層情報保持部156に供給する。そして、RTP処理部152は、UDP通信部151から供給されたRTPパケットから画像データを抽出し、抽出した画像データをデコーダ153に供給する。そして、さらにRTP処理部152は、UDP通信部151から供給されたRTPパケットから、シーケンス番号を抽出し、抽出したシーケンス番号、RTPパケットの受信時刻、および受信されたRTPパケットのパケットサイズを、ストリーム情報算出部155に供給する。
ステップS123において、階層情報保持部156は、RTP処理部152から供給された階層情報を記憶する。より詳細には、ステップS123において、階層情報保持部156の送信階層情報保持部181は、RTP処理部152から供給された、階層情報である送信階層情報を記憶し、階層情報保持部156の最大階層情報保持部182は、RTP処理部から供給された、階層情報である最大階層情報を記憶する。
ステップS124において、階層変更要求部160は、入力部86から変更信号が供給されたか否かを判定する。
なお、変更信号は、ユーザが入力部86を操作することによって、送信階層の変更を指示した場合に、入力部86によって生成され、生成された変更信号が、階層変更要求部160に供給される。ユーザは、ディスプレイである出力部87に表示される、受信した画像、コンテンツ階層テーブル、受信帯域、RTPパケットのロス率、帯域、および送信階層を参照し、必要に応じて、送信階層変更を指示する。
ステップS124において、入力部86から変更信号が供給されたと判定された場合、ステップS125に進み、階層変更要求部160は、階層情報保持部156から階層情報を取得する。
ステップS126において、階層変更要求部160は、入力部86から供給された変更信号および階層情報保持部156から取得した階層情報を基に、変更要求を生成し、生成した変更要求をTCP通信部158に供給する。
より詳細には、ステップS126において、階層変更要求部160は、入力部86から、送信階層を1つ上位の階層に変更する旨の変更信号が供給された場合、階層情報保持部156から取得した、階層情報である送信階層情報を基に、送信階層を、送信階層情報が示す送信階層の1つ上位の階層に変更する旨の変更要求を生成し、生成した変更要求をTCPに従うパケットに格納する。そして、階層変更要求部160は、変更要求を格納したパケットをTCP通信部158に供給する。
したがって、例えば、ステップS126において、階層変更要求部160は、入力部86から、送信階層を1つ上位の階層に変更する旨の変更信号が供給され、階層情報保持部156から取得した階層情報である送信階層情報が、送信階層が4番目の階層であることを示す送信階層情報であった場合、送信階層を5番目の階層に変更する旨の変更要求を生成し、生成した変更要求をTCPに従うパケットに格納する。そして、階層変更要求部160は、変更要求を格納したパケットをTCP通信部158に供給する。
また、ステップS126において、階層変更要求部160は、入力部86から、送信階層を1つ下位の階層に変更する旨の変更信号が供給された場合、階層情報保持部156から取得した、階層情報である送信階層情報を基に、送信階層を、送信階層情報が示す送信階層の1つ下位の階層に変更する旨の変更要求を生成し、生成した変更要求をTCPに従うパケットに格納する。そして、階層変更要求部160は、変更要求を格納したパケットをTCP通信部158に供給する。
したがって、例えば、ステップS126において、階層変更要求部160は、入力部86から送信階層を1つ下位の階層に変更する旨の変更信号が供給され、階層情報保持部156から取得した階層情報である送信階層情報が、送信階層が4番目の階層であることを示す送信階層情報であった場合、送信階層を3番目の階層に変更する旨の変更要求を生成し、生成した変更要求をTCPに従うパケットに格納する。そして、階層変更要求部160は、変更要求を格納したパケットをTCP通信部158に供給する。
ステップS127において、TCP通信部158は、階層変更要求部160から供給された変更要求を、通信網13を介して、サーバ12あてに送信し、ステップS128に進む。
一方ステップS124において、入力部86から変更信号が供給されなかったと判定された場合、変更要求をサーバ12に送信する必要がないので、ステップS125乃至ステップS127の処理は、スキップされ、手続きは、ステップS128に進む。
ステップS128において、ストリーム情報算出部155は、RTP処理部152から供給されたRTPパケットの受信時刻およびパケットサイズを基に、受信帯域を算出し、算出した受信帯域を基に、受信帯域を表示させる画像データを生成する。そして、ストリーム情報算出部155は、生成した受信帯域を表示させる画像データを出力部87に供給する。
例えば、ステップS128において、ストリーム情報算出部155は、RTP処理部152から供給された1つのフレームを構成するRTPパケットのパケットサイズの合計、およびRTPパケットを受信した時刻を式(2)に代入することによって、受信帯域を算出する。
(受信帯域)=S2/(t42−t41) ・・・(2)
ここで、S2は、受信された1つのフレームを構成するRTPパケットのパケットサイズの合計である。また、t41は、1つのフレームを構成するRTPパケットのうち、一番初めに受信されたRTPパケットの受信時刻であり、t42は、次の1つのフレームを構成するRTPパケットのうち、一番初めに受信されたRTPパケットの受信時刻である。
したがって、例えば、図2の例において、受信されたフレーム32を構成するパケット42−1乃至パケット42−3を基に、受信帯域を算出する場合、RTPパケットのパケットサイズの合計S2は、パケット42−1乃至パケット42−3のパケットサイズの合計であり、フレーム32を構成するパケットのうち、一番初めに受信されたパケットの受信時刻t41は、クライアント14が、パケット42−1を受信した時刻であり、次のフレーム33を構成するパケットのうち、一番初めに受信されたパケットの受信時刻t42は、クライアント14が、パケット43−1を受信した時刻である。
ステップS129において、ストリーム情報算出部155は、RTP処理部152から供給されたシーケンス番号を基に、RTPパケットのロス率を算出し、算出したロス率を基に、ロス率を表示させる画像データを生成する。そして、ストリーム情報算出部155は、生成したロス率を表示させる画像データを、出力部87に供給する。
ステップS130において、デコーダ153は、RTP処理部153から供給された画像データを、エンコーダ131の符号化方式に対応する方式により復号する。デコーダ153は、復号した画像データを合成部154に供給する。
例えば、ステップS130において、デコーダ153は、RTP処理部152から、1番目の階層から3番目の階層の画像データのそれぞれが供給された場合、供給された1番目の階層から3番目の階層の画像データのそれぞれをエンコーダ131の符号化方式に対応する方式により、1つの画像データに復号し、復号した画像データを合成部154に供給する。
ステップS131において、合成部154は、デコーダ153から供給された画像データおよび階層情報保持部156から供給された階層情報を表示させるデータを重畳し、重畳した画像データを出力部87に供給する。
ステップS132において、出力部87は、合成部154から供給された画像データを基に、画像をディスプレイである出力部87に表示させる。例えば、ステップS132において、出力部87は、合成部154から供給された画像データを基に、図16で示される画像をディスプレイである出力部87に表示させる。
ディスプレイである出力部87には、ウィンドウ231が表示され、ウィンドウ231には、受信された画像241が表示される。また、ウィンドウ231には、受信帯域、RTPパケットのロス率、帯域、および送信階層のそれぞれを表す文字“受信帯域”、“ロス率”、“帯域”、および“送信階層”のそれぞれが表示され、表示されたそれぞれの文字の右側に、それぞれの値が表示される。
例えば、受信帯域を表す文字“受信帯域”の右側に、受信帯域の値“0.4Mbps”が表示され、RTPパケットのロス率を表す文字“ロス率”の右側に、ロス率の値“1%”が表示され、帯域を表す文字“帯域”の右側に、帯域の値“0.3Mbps”が表示され、送信階層を表す文字“送信階層”の右側に、最大階層が5番目の階層であり、送信階層が3番目の階層であることを示す“3/5”が表示される。
また、送信階層を表す文字“送信階層”の下には、最大階層および送信階層を表す数直線が表示される。図16の例においては、数直線上の“3”で表される目盛り上に表示されている四角によって、送信階層が3番目の階層であることが表されている。
さらに、ユーザが、入力部86を操作することによって、ポインタ(図示せず)を移動させ、ボタン232がクリックされた場合、ウィンドウ231は、閉じられる。
より詳細には、ステップS132において、出力部87は、合成部154から供給された画像データ、ストリーム情報算出部155から供給された、ロス率を表示させる画像データおよび受信帯域を表示させる画像データ、並びに帯域算出部157から供給された帯域測定結果を表示させる画像データを重畳し、重畳した画像データを基に、ディスプレイである出力部87に画像を表示させる。また、出力部87は、合成部154、ストリーム情報算出部155、または帯域算出部157から新たな画像データが供給された場合、表示している画像の画像データと新たに供給された画像データとを重畳し、重畳した画像データを基に、ディスプレイである出力部87に画像を表示させる。
したがって、例えば、帯域算出部157から、帯域測定結果を表示する新たな画像データが供給された場合、出力部87は、それまで表示していた帯域測定結果を表示させる画像データを破棄し、合成部154から供給された画像データ、ストリーム情報算出部155から供給された、ロス率を表示させる画像データおよび受信帯域を表示させる画像データ、並びに帯域算出部157から、新たに供給された帯域測定結果を表示させる画像データを重畳し、重畳した画像データを基に、ディスプレイである出力部87に画像を表示させる。
ステップS133において、出力部87は、ストリーム情報算出部155から供給された通信網13の受信帯域を表示させる画像データを基に、ディスプレイである出力部87に、通信網13の受信帯域を表示させる。
ステップS134において、出力部87は、ストリーム情報算出部155から供給されたRTPパケットのロス率を表示させる画像データを基に、ディスプレイである出力部87に、RTPパケットのロス率を表示させ、ステップS121に戻り、上述した処理を繰り返す。
このようにして、クライアント14は、変更要求を生成し、生成した変更要求を、通信網13を介して、サーバ12あてに送信する。また、クライアント14は、ロス率、階層情報、および受信帯域を表示するので、ユーザは、設定されている送信階層が、通信網13の帯域に対して、適正であるか否かを知ることができる。
以上のように、クライアント14は、サーバ12から送信されてくるRTPパケットに格納されている階層情報を基に、送信階層を表示させることができる。また、クライアント14は、変更要求を生成し、生成した変更要求をサーバ12あてに送信することによって、必要に応じて、送信階層を変更することができる。
第1の本発明によれば、送信装置から送信されてきたデータを受信するようにしたので、受信したデータを出力(表示)することができる。また、第1の本発明によれば、送信装置から送信されてきた階層情報を表示させるようにしたので、データの受信側において、最大階層および送信階層を把握することができる。さらに、第1の本発明によれば、最大階層、送信階層、および帯域を表示させるようにしたので、必要に応じて、送信階層を変更することができる。
また、第2の発明によれば、データをパケットに格納するようにしたので、データを送信することができる。また、第2の発明によれば、階層情報をパケットに格納するようにしたので、データの受信側に、最大階層および送信階層を通知することができる。さらに、第2の発明によれば、変更要求を受信するようにしたので、変更要求を基に、送信階層を変更することができる。
次に、本発明の第2の実施例について、説明する。
図17のタイムチャートを参照して、サーバ12における、帯域測定の処理および送信階層の変更の処理の例を説明する。
図17において、横軸は時間を示し、帯域測定パケット261は、例えば、通信網13の帯域を測定するための、等しいパケットサイズのパケット271−1およびパケット271−2から構成される。また、例えば、フレーム262を再生するための画像データであるストリーミングデータは、パケット272−1乃至パケット272−3に格納されて送信され、フレーム263を再生するための画像データであるストリーミングデータは、パケット273−1乃至パケット273−3に格納されて送信され、フレーム264を再生するための画像データであるストリーミングデータは、パケット274−1乃至パケット274−4に格納されて送信される。
時刻t51において、サーバ12は、通信網13の帯域を測定するためのパケット271−1を、通信網13を介して、クライアント14あてに送信する。同様に、時刻t52において、サーバ12は、通信網13の帯域を測定するためのパケット271−2を、通信網13を介して、クライアント14あてに送信する。パケット271−1およびパケット271−2は、時間間隔をおかずに、続けて(連続して)クライアント14あてに送信される。
時刻t61において、クライアント14は、サーバ12から送信されてきたパケット271−1を受信し、時刻t62において、クライアント14は、サーバ12から送信されてきたパケット271−2を受信する。クライアント14は、パケット271−1およびパケット271−2を受信すると、受信したパケット271−1およびパケット271−2を基に、通信網13における帯域を算出する。
時刻t63において、クライアント14は、算出した帯域の測定結果である帯域測定結果を、通信網13を介して、サーバ12あてに送信する。例えば、クライアント14は、帯域測定結果をパケットに格納し、帯域測定結果を格納したパケットを、通信網13を介して、サーバ12あてに送信する。
時刻t53において、サーバ12は、クライアント14から送信されてきた帯域測定結果を受信する。サーバ12は、帯域測定結果を受信すると、受信した帯域測定結果を基に、送信階層を選択し、時刻t54において、送信階層情報および最大階層情報からなる階層情報を、通信網13を介して、クライアント14あてに送信する。例えば、サーバ12は、階層情報をパケットに格納し、階層情報を格納したパケットを、通信網13を介して、クライアント14あてに送信する。
サーバ12は、階層情報をクライアント14あてに送信してから、選択した送信階層を基に、パケット272−1乃至パケット272−3を、通信網13を介して、クライアント14あてに送信する。同様に、サーバ12は、パケット273−1乃至パケット273−3を、通信網13を介して、クライアント14あてに送信する。
クライアント14は、サーバ12から送信されてきた階層情報、パケット272−1乃至パケット272−3、およびパケット273−1乃至パケット273−3を受信する。
時刻t64において、クライアント14は、変更要求を、通信網13を介して、サーバ12あてに送信する。例えば、クライアント14は、変更要求をパケットに格納し、変更要求を格納したパケットを、通信網13を介して、サーバ12あてに送信する。
サーバ12は、クライアント14から送信されてきた変更要求を受信する。サーバ12は、受信した変更要求を基に、送信階層を変更し、変更した送信階層を基に、階層情報を生成する。
時刻t55において、サーバ12は、生成した階層情報を、通信網13を介して、クライアント14あてに送信する。サーバ12は、階層情報を送信してから、変更した送信階層を基に、パケット274−1乃至パケット274−4を、通信網13を介して、クライアント14あてに送信する。
クライアント14は、サーバ12から送信されてきた階層情報およびパケット274−1乃至パケット274−4を受信する。
このようにして、サーバ12は、帯域に応じて送信階層を選択し、選択した送信階層を基に、画像データが格納されているパケットをクライアント14に送信する。
図18は、サーバ12の機能の構成を示すブロック図である。
サーバ12は、エンコーダ291、パケタイザ292、バッファ293、UDP通信部294、TCP通信部295、送信階層選択部296、コンテンツ階層保持部297、送信階層情報保持部298、および階層処理部299を含むように構成される。
なお、エンコーダ291、バッファ293、UDP通信部294、送信階層選択部296、コンテンツ階層保持部297、および送信階層情報保持部298のそれぞれは、図5におけるエンコーダ131、バッファ133、UDP通信部134、送信階層選択部136、コンテンツ階層保持部137、および送信階層情報保持部138のそれぞれと同様なので、その説明は、省略する。
パケタイザ292は、エンコーダ291から供給された画像データを、RTP方式のパケットに格納することにより、RTPパケットを生成する。パケタイザ292は、生成したRTPパケットをバッファ293に供給する。
より詳細には、パケタイザ292は、階層符号化された、1つの階層に対応する画像データを1つのRTPパケットに格納することにより、各階層に対応するRTPパケットのそれぞれを生成する。パケタイザ292は、生成した各階層に対応するRTPパケットのそれぞれを、バッファ293に供給する。
TCP通信部295は、通信網13を介して、各種のデータの送受信を行う。TCP通信部295は、TCPに従って、データの送受信を行う。
TCP通信部295は、コンテンツ階層保持部297から供給されたコンテンツ階層テーブルを、通信網13を介してクライアント14あてに送信する。TCP通信部295は、階層処理部299から供給された階層情報を、通信網13を介して、クライアント14あてに送信する。また、TCP通信部295は、クライアント14から送信されてきた変更要求を受信し、受信した変更要求を階層処理部299に供給する。TCP通信部295は、クライアント14から送信されてきた帯域測定結果を受信し、受信した帯域測定結果を、送信階層選択部296に供給する。
なお、UDP通信部294およびTCP通信部295は、通信部(図示せず)を制御して、通信部を介することにより、データの送受信を行う。
階層処理部299は、送信階層情報保持部298から供給された送信階層情報およびコンテンツ階層保持部297から供給されたコンテンツ階層テーブルを基に、階層情報を生成し、生成した階層情報をTCP通信部295に供給する。
階層処理部299は、バッファ293を制御して、生成した階層情報を基に、1番目の階層から送信階層までの階層のそれぞれに対応するRTPパケットのそれぞれをUDP通信部294に供給させる。
階層処理部299は、TCP通信部295から供給された変更要求を基に、送信階層情報を生成し、生成した送信階層情報を送信階層情報保持部298に供給する。
図19は、クライアント14の機能の構成を示すブロック図である。
クライアント14は、UDP通信部311、RTP処理部312、デコーダ313、合成部314、ストリーム情報算出部315、階層情報保持部316、帯域算出部317、TCP通信部318、コンテンツ階層保持部319、出力部320、入力部321、および階層変更要求部322を含むように構成される。
なお、UDP通信部311、デコーダ313、合成部314、ストリーム情報算出部315、帯域算出部317、コンテンツ階層保持部319、出力部320、入力部321、および階層変更要求部322のそれぞれは、図6におけるUDP通信部151、デコーダ153、合成部154、ストリーム情報算出部155、帯域算出部157、コンテンツ階層保持部159、出力部87、入力部86、および階層変更要求部160のそれぞれと同様なので、その説明は、省略する。
RTP処理部312は、UDP通信部311から供給されたRTPパケットから画像データを抽出し、抽出した画像データをデコーダ313に供給する。また、RTP処理部312は、UDP通信部311から供給されたRTPパケットからシーケンス番号を抽出し、抽出したシーケンス番号、RTPパケットの受信時刻、およびRTPパケットのパケットサイズをストリーム情報算出部315に供給する。
階層情報保持部316は、TCP通信部318から供給された階層情報を保持(記憶)する。階層情報保持部316は、TCP通信部318から供給された階層情報を基に、階層情報を表示させる画像データを生成し、生成した画像データを合成部314に供給する。階層情報保持部316は、TCP通信部318から供給された階層情報を、階層変更要求部322に供給する。
なお、階層情報保持部316は、生成した階層情報を表示させる画像データを、合成部314に供給せずに、出力部320に供給するようにしてもよい。
階層情報保持部316は、送信階層情報保持部331および最大階層情報保持部332を含むように構成される。
階層情報保持部316の送信階層情報保持部331は、TCP通信部318から供給された階層情報の送信階層情報を記憶する。階層情報保持部316の最大階層情報保持部332は、TCP通信部318から供給された階層情報の最大階層情報を記憶する。
TCP通信部318は、サーバ12のTCP通信部295に対応し、通信網13を介して、各種のデータの送受信を行う。TCP通信部318は、TCPに従って、データの送受信を行う。
TCP通信部318は、サーバ12から送信されてきたコンテンツ階層テーブルを受信し、受信したコンテンツ階層テーブルをコンテンツ階層保持部319に供給する。また、TCP通信部318は、サーバ12から送信されてきた階層情報を受信し、受信した階層情報を階層情報保持部316に供給する。
TCP通信部318は、帯域算出部317から供給された帯域測定結果を、通信網13を介して、サーバ12あてに送信する。TCP通信部318は、階層変更要求部322から供給された変更要求を、通信網13を介して、サーバ12あてに送信する。
なお、UDP通信部311およびTCP通信部318は、通信部(図示せず)を制御して、通信部を介することにより、データの送受信を行う。
次に、図20のフローチャートを参照して、サーバプログラムを実行するサーバ12による、送信階層変更の処理を説明する。
ステップS151において、送信階層選択部296は、帯域測定の処理を実行する。ステップS151における帯域測定の処理は、図9のフローチャートを参照して説明した処理と同様なので、その説明は省略する。なお、帯域測定の処理において、送信階層が選択される。
ステップS152において、階層処理部299は、コンテンツ階層保持部297から供給されたコンテンツ階層テーブルおよび送信階層情報保持部298から供給された送信階層情報を基に、階層情報を生成し、生成した階層情報をTCP通信部295に供給する。
より詳細には、ステップS152において、階層処理部299は、コンテンツ階層保持部297から供給されたコンテンツ階層テーブルおよび送信階層情報保持部298から供給された送信階層情報を基に、階層情報を生成し、生成した階層情報をTCPに従ったパケットに格納する。そして、階層処理部299は、階層情報を格納したパケットをTCP通信部295に供給する。
ステップS153において、TCP通信部295は、階層処理部299から供給された階層情報を、通信網13を介して、クライアント14あてに送信し、ステップS154に進む。
ステップS154乃至ステップS157の処理のそれぞれは、図7におけるステップS12乃至ステップS15の処理のそれぞれと同様なので、その説明は、省略する。なお、ステップS156において、TCP通信部295が、クライアント14から変更要求を受信したと判定された場合、ステップS157に進み、変更要求を受信していないと判定された場合、送信階層を変更する必要がないので、ステップS157乃至ステップS159の処理は、スキップされ、手続きは、ステップS160に進む。
ステップS158において、階層処理部299は、コンテンツ階層保持部297から供給されたコンテンツ階層テーブルおよび送信階層情報保持部298から供給された送信階層情報を基に、階層情報を生成し、生成した階層情報をTCP通信部295に供給する。
より詳細には、ステップS158において、階層処理部299は、コンテンツ階層保持部297から供給されたコンテンツ階層テーブルおよび送信階層情報保持部298から供給された送信階層情報を基に、階層情報を生成し、生成した階層情報をTCPに従ったパケットに格納する。そして、階層処理部299は、階層情報を格納したパケットをTCP通信部295に供給する。
ステップS159において、TCP通信部295は、階層処理部299から供給された階層情報を、通信網13を介して、クライアント14あてに送信し、ステップS160に進む。
ステップS160において、サーバ12の各部は、データ送信の処理を行う。なお、データ送信の処理の詳細は、後述するが、データ送信の処理において、ビデオカメラ11から供給された画像データが、階層符号化され、各階層の画像データが、各階層に対応するRTPパケットに格納される。そして、各階層に対応するRTPパケットのそれぞれは、通信網13を介して、クライアント14あてに送信される。
データ送信の処理が終了すると、手続きは、ステップS156に戻り、上述した処理を繰り返す。
このようにして、サーバ12は、クライアント14から送信されてきた変更要求を基に、送信階層の変更を行う。
次に図21のフローチャートを参照して、図20のステップS160の処理に対応するデータ送信の処理を説明する。
ステップS181乃至ステップS184の処理のそれぞれは、図11におけるステップS71乃至ステップS74の処理のそれぞれと同様なので、その説明は、省略する。
ステップS185において、パケタイザ293は、エンコーダ291から供給された画像データを基に、図22で示される、各階層に対応するRTPパケットを生成し、ステップS186に進む。
図22は、RTPパケットを説明する図である。バージョン情報、パディング、拡張情報、CSRCカウント、メーカー情報、ペイロードタイプ、シーケンス番号、タイムスタンプ、SSRC識別子、およびオリジナルデータは、図12で示されるRTPパケットの場合と同様であるので、その説明は、省略する。
より詳細には、ステップS185において、パケタイザ292は、エンコーダ291から供給された、各階層に対応する画像データのそれぞれを各階層に対応するRTPパケットのそれぞれに格納することによって、各階層に対応するRTPパケットのそれぞれを生成する。
したがって、例えば、パケタイザ292は、最大階層が、5番目の階層である場合、1番目の階層の画像データをRTPパケットに格納することによって、1番目の階層に対応するRTPパケットを生成し、2番目の階層の画像データをRTPパケットに格納することによって、2番目の階層に対応するRTPパケットを生成し、3番目の階層の画像データをRTPパケットに格納することによって、3番目の階層に対応するRTPパケットを生成する。同様に、4番目の階層の画像データをRTPパケットに格納することによって、4番目の階層に対応するRTPパケットを生成し、5番目の階層の画像データをRTPパケットに格納することによって、5番目の階層に対応するRTPパケットを生成する。
なお、RTPパケットは、クライアント14に送信する画像データを格納するパケットの一例である。
ステップS186乃至ステップS190の処理のそれぞれは、図11におけるステップS77乃至ステップS81の処理のそれぞれと同様なので、その説明は、省略する。
このようにして、サーバ12は、画像データをRTPパケットに格納し、画像データが格納されたRTPパケットを、通信網13を介して、クライアント14あてに送信する。
次に、図23を参照して、クライアント14による変更要求の送信の処理を説明する。
ステップS211において、UDP通信部311は、サーバ12から送信されてきたRTPパケットを受信し、受信したRTPパケットをRTP処理部312に供給する。
ステップS212において、階層情報保持部316は、階層情報受信の処理を行い、ステップS213に進む。なお、階層情報受信の処理の詳細は、後述するが、階層情報受信の処理において、受信された階層情報が、階層情報保持部316に記憶される。
ステップS213乃至ステップS216の処理のそれぞれは、図15におけるステップS124乃至ステップS127の処理のそれぞれと同様なので、その説明は、省略する。
ステップS217において、階層情報保持部316は、階層情報受信の処理を行い、ステップS218に進む。
ステップS218乃至ステップS224の処理のそれぞれは、図15におけるステップS128乃至ステップS134の処理のそれぞれと同様なので、その説明は、省略する。
また、ステップS222において、出力部320は、図24で示される画像をディスプレイである出力部320に表示させるようにしてもよい。
この場合、ディスプレイである出力部320には、ウィンドウ231が表示され、ウィンドウ231には、受信された画像241が表示される。また、ウィンドウ231と同時に表示される、別のウィンドウ351には、受信帯域、RTPパケットのロス率、帯域、および送信階層のそれぞれを表す文字“受信帯域”、“ロス率”、“帯域”、および“送信階層”のそれぞれが表示され、表示されたそれぞれの文字の右側に、それぞれの値が表示される。
例えば、受信帯域を表す文字“受信帯域”の右側に、受信帯域の値“0.4Mbps”が表示され、RTPパケットのロス率を表す文字“ロス率”の右側に、ロス率の値“1%”が表示され、帯域を表す文字“帯域”の右側に、帯域の値“0.3Mbps”が表示され、送信階層を表す文字“送信階層”の右側に、最大階層が5番目の階層であり、送信階層が3番目の階層であることを示す“3/5”が表示される。
また、送信階層を表す文字“送信階層”の下には、最大階層および送信階層を表す数直線が表示される。図24の例においては、数直線上の“3”で表される目盛り上に表示されている四角によって、送信階層が3番目の階層であることが表されている。
さらに、ユーザが、入力部321を操作することによって、ポインタ(図示せず)を移動させ、ボタン232がクリックされた場合、ウィンドウ231は、閉じられる。同様に、ユーザが、入力部321を操作することによって、ポインタ(図示せず)を移動させ、ボタン352がクリックされた場合、ウィンドウ351は、閉じられる。
このようにして、クライアント14は、変更要求を生成し、生成した変更要求を、通信網13を介して、サーバ12あてに送信する。
次に図25のフローチャートを参照して、図23のステップS212およびステップS217の処理に対応する、階層情報受信の処理を説明する。
ステップS241において、階層情報保持部316は、TCP通信部318が、サーバ12から送信されてきた階層情報を受信したか否かを判定する。
ステップS241において、TCP通信部318が、階層情報を受信したと判定された場合、ステップS242に進み、階層情報保持部316は、TCP通信部318から階層情報を取得し、取得した階層情報を記憶する。
より詳細には、ステップS242において、階層情報保持部316は、TCP通信部318から階層情報を取得し、階層情報保持部316の送信階層情報保持部331は、取得された階層情報である送信階層情報を記憶する。また、階層情報保持部316の最大階層情報保持部332は、取得された階層情報である最大階層情報を記憶し、処理は終了する。
一方、ステップS241において、TCP通信部318が、階層情報を受信していないと判定された場合、ステップS242の処理は、スキップされ、処理は、終了する。
このようにして、階層情報保持部316は、受信された階層情報を記憶する。
以上のように、クライアント14は、サーバ12から送信されてくる階層情報を基に、送信階層を表示させることができる。また、クライアント14は、変更要求を生成し、生成した変更要求をサーバ12あてに送信することによって、必要に応じて、送信階層を変更することができる。
第1の本発明によれば、送信装置から送信されてきたデータを受信するようにしたので、受信したデータを出力(表示)することができる。また、第1の本発明によれば、送信装置から送信されてきた階層情報を表示させるようにしたので、データの受信側において、最大階層および送信階層を把握することができる。さらに、第1の本発明によれば、最大階層、送信階層、および帯域を表示させるようにしたので、必要に応じて、送信階層を変更することができる。
また、第2の発明によれば、データをパケットに格納するようにしたので、データを送信することができる。また、第2の発明によれば、階層情報を送信するようにしたので、データの受信側に、最大階層および送信階層を通知することができる。さらに、第2の発明によれば、変更要求を受信するようにしたので、変更要求を基に、送信階層を変更することができる。
なお、帯域の測定は、パケットペアを送信することにより測定すると説明したが、パケットトレイン方式などにより測定するようにしてもよく、その他、Diffserv(Differentiated Services)やSNMP(Simple Network Management Protocol)を利用することによって測定するようにしてもよい。
また、クライアント14の出力部87に画像を表示させると説明したが、クライアント14とは別に、画像を表示させる出力装置を設けるようにしてもよい。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図4に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク111(フレキシブルディスクを含む)、光ディスク112(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク113(MD(Mini-Disc)(商標)を含む)、若しくは半導体メモリ114などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM82や、記録部88に含まれるハードディスクなどで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
12 サーバ, 13 通信網, 14 クライアント, 81 CPU, 82 ROM, 83 RAM, 86 入力部, 87 出力部, 88 記録部, 111 磁気ディスク, 112 光ディスク, 113 光磁気ディスク, 114 半導体メモリ 131 エンコーダ, 132 パケタイザ, 136 送信階層選択部, 137 コンテンツ階層保持部, 138 送信階層保持部, 139 階層処理部, 152 RTP処理部, 153 デコーダ, 155 ストリーム情報算出部, 156 階層情報保持部, 157 帯域算出部, 159 コンテンツ階層保持部, 160 階層変更要求部, 181 送信階層情報保持部, 182 最大階層情報保持部, 296 送信階層選択部, 298 送信階層情報保持部, 299 階層処理部, 312 RTP処理部, 316 階層情報保持部, 317 帯域算出部, 320 階層変更要求部