以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
本発明によれば、送信装置が提供される。この送信装置は、送信パケット(例えば、図3のパケタイザ72から通信部39に供給されるRTPパケット)の送信レートが所定の値となるようにストリーミングデータを符号化する符号化手段(例えば、図3のエンコーダ71)と、通信網の伝送状態(例えば、往復伝搬遅延時間)を取得する取得手段(例えば、図3のRTT計測部74)と、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化手段に符号化を指示する指示手段(例えば、図3のレート制御部76)と、相手が正常に受信できなかった送信パケットに対応する再送パケット(例えば、再送用バッファ73に格納されているRTPパケット)の再送が要求された場合、指示手段が送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、指示手段が送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御手段(例えば、図3のNACK処理部75)とを含む。
この送信装置は、使用者の指示または通信網の伝送状態を基に、再送パケットの再送を制御するモードを設定する設定手段(例えば、図3のモードスイッチ設定部78)をさらに設け、送信制御手段は、指示手段が送信レートを維持させるように符号化を指示し、相手から再送パケットの再送が要求された場合、モードがオンに設定されているとき(例えば、モードスイッチがオンであるとき)、要求された再送パケットを再送し、モードがオフに設定されているとき(例えば、モードスイッチがオフであるとき)、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御するようにすることができる。
設定手段は、取得手段で取得された伝送状態である、通信網の遅延時間が予め定めた第1の閾値以下で、かつ、送信パケットのロス率が予め定めた第2の閾値以下である場合、モードをオンに設定するようにすることができる。
伝送状態は、通信網の遅延時間(例えば、往復伝搬遅延時間)とすることができる。
指示手段は、遅延時間が減少している場合、送信パケットの送信レートを増加させるかまたは維持させるように符号化手段に符号化を指示し、遅延時間が増加している場合、送信パケットの送信レートを維持させるかまたは減少させるように符号化手段に符号化を指示するようにすることができる。
伝送状態は、送信パケットのロス率とすることができる。
指示手段は、送信パケットのロス率が減少している場合、送信パケットの送信レートを増加させるかまたは維持させるように符号化手段に符号化を指示し、送信パケットのロス率が増加している場合、送信パケットの送信レートを維持させるかまたは減少させるように符号化手段に符号化を指示するようにすることができる。
本発明によれば、送信方法が提供される。この送信方法は、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化ステップ(例えば、図5のステップS14の処理)と、通信網の伝送状態(例えば、往復伝搬遅延時間)を取得する取得ステップ(例えば、図7のステップS35の処理)と、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化ステップにおける符号化を指示する指示ステップ(例えば、図7のステップS36乃至ステップS40の処理)と、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示ステップにおいて送信レートを増加させるように符号化が指示されているとき、要求された再送パケットを再送し、指示ステップにおいて送信レートを減少させるように符号化が指示されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御ステップ(例えば、図12のステップS91乃至ステップS93の処理)とを含む。
本発明によれば、プログラムが提供される。このプログラムは、コンピュータに、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化ステップ(例えば、図5のステップS14の処理)と、通信網の伝送状態(例えば、往復伝搬遅延時間)を取得する取得ステップ(例えば、図7のステップS35の処理)と、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化ステップにおける符号化を指示する指示ステップ(例えば、図7のステップS36乃至ステップS40の処理)と、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示ステップにおいて送信レートを増加させるように符号化が指示されているとき、要求された再送パケットを再送し、指示ステップにおいて送信レートを減少させるように符号化が指示されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御ステップ(例えば、図12のステップS91乃至ステップS93の処理)とを実行させる。
このプログラムは、記録媒体(例えば、図2の磁気ディスク51)に記録することができる。
本発明は、例えば、インターネット電話、遠隔テレビ会議システム、ライブ映像ストリーミング配信システム、またはテレビ電話などのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
図1は、本発明に係る通信システムの一実施の形態を示す図である。カメラ11は、画像を撮像して、撮像した画像に対応する画像データをサーバ12に供給する。例えば、カメラ11は、動画像を撮像して、動画像に対応する画像データをサーバ12に供給する。
画像データは、ストリーミングデータの一例である。ストリーミングデータは、音声のデータ、またはリアルタイム制御データなど、時間の経過に対応して順次送信または受信が要求されるデータであればよい。
サーバ12は、カメラ11から供給された画像データをパケットに格納して、パケットを通信網13を介して、クライアント14に送信する。
通信網13は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、所定の遅延時間で、サーバ12から送信されたパケットをクライアント14まで伝送する。
クライアント14は、通信網13を介してサーバ12から送信されてきたパケットを受信して、受信したパケットに格納されている画像データを抽出する。
クライアント14は、ストリーミングデータが格納されているパケットを正常に受信できなかった場合、サーバ12に再送を要求する。サーバ12は、クライアント14から再送が要求された場合、通信網13の状態などに応じて、ストリーミングデータが格納されているパケットを再送する。
図2は、サーバ12の構成の例を示すブロック図である。CPU(Central Processing Unit)31は、ROM(Read Only Memory)32、または記録部38に記録されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)33には、CPU31が実行するプログラムやデータなどが適宜記憶される。これらのCPU31、ROM32、およびRAM33は、バス34により相互に接続されている。
CPU31にはまた、バス34を介して入出力インタフェース35が接続されている。入出力インタフェース35には、キーボード、マウス、スイッチなどよりなる入力部36、ディスプレイ、スピーカ、ランプなどよりなる出力部37が接続されている。CPU31は、入力部36から入力される指令に対応して各種の処理を実行する。
入出力インタフェース35に接続されている記録部38は、例えばハードディスクなどで構成され、CPU31が実行するプログラムや各種のデータを記録する。通信部39は、インターネット、その他のネットワークなどの通信網13を介して、クライアント14などの外部の装置と通信する。
また、通信部39を介してプログラムを取得し、記録部38に記録してもよい。
入出力インタフェース35に接続されているドライブ40は、磁気ディスク51、光ディスク52、光磁気ディスク53、或いは半導体メモリ54などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部38に転送され、記録される。
なお、クライアント14は、サーバ12と同様に構成されるので、その説明は省略する。
図3は、サーバ12の機能の構成を示すブロック図である。
サーバ12は、エンコーダ71、パケタイザ72、再送用バッファ73、RTT(Round-Trip Time(往復伝搬遅延時間))計測部74、NACK(Negative Acknowledgment)処理部75、レート制御部76、RTCP(RTP Control Protocol)解析部77、およびモードスイッチ設定部78を含む。
エンコーダ71は、レート制御部76の制御に基づき、所定のビットレートで、供給されたストリーミングデータの一例である画像データを符号化し、符号化された画像データをパケタイザ72に供給する。パケタイザ72は、エンコーダ71から供給された、符号化されている画像データを所定の方式のパケットに格納して、パケットを通信部39および再送用バッファ73に供給する。
再送用バッファ73は、パケタイザ72から供給されたパケットを再送パケットとして一時的に記憶し、NACK処理部75の制御に基づいて、記憶している再送パケットを通信部39に供給する。
通信部39は、パケタイザ72から供給されたパケットを送信パケットとして、通信網13を介して、相手であるクライアント14に送信する。通信部39は、再送用バッファ73から供給された再送パケットを、通信網13を介して、相手に送信する。
RTT計測部74は、RTT計測パケットを通信部39に供給する。RTT計測パケットの詳細は後述する。RTT計測部74は、通信部39が受信し、通信部39から供給されたRTT計測パケットを基に、通信網13の往復伝搬遅延時間を算出する。RTT計測部74は、算出した往復伝搬遅延時間をレート制御部76およびモードスイッチ設定部78に供給する。
NACK処理部75は、モードスイッチ設定部78のモードスイッチの設定、および通信部39が受信し、通信部39から供給された再送要求パケットを基に、再送用バッファ73に格納されている再送パケットの相手への送信を制御する。再送要求パケットの詳細は後述する。
レート制御部76は、RTT計測部74から供給された往復伝搬遅延時間を基に、エンコーダ71の符号化のビットレートを制御する。すなわち、レート制御部76は、エンコーダ71の符号化のビットレートを制御することにより、通信部39における送信パケットの送信レートを制御する。例えば、レート制御部76は、送信レートを増加させるか、減少させるか、または維持させるようにエンコーダ71に符号化を指示する。
または、レート制御部76は、RTCP解析部77から供給されたパケットロス率を基に、エンコーダ71の符号化のビットレートを制御する。
RTCP解析部77は、通信部39が受信し、通信部39から供給されたレシーバレポートパケットから、クライアント14が受信した送信パケットのパケットロス率を抽出することにより、通信網13のパケットのロス率を取得して、取得したロス率をモードスイッチ設定部78およびレート制御部76に供給する。
モードスイッチ設定部78は、使用者の操作に対応した入力部36からの信号、RTT計測部74から供給された往復伝搬遅延時間、またはRTCP解析部77から供給されたロス率を基に、モードスイッチをオンまたはオフに設定する。モードスイッチは、送信レートが維持されている場合に、再送パケットの再送を許可するか否か、すなわち、いわゆるARQの処理を実行するか否かを示す。
図4は、クライアント14の機能の構成を示すブロック図である。
クライアント14は、通信部91、RTP処理部92、バッファ93、デコーダ94、NACK処理部95、およびRTT処理部96を含む。
通信部91は、クライアント14の図2における通信部39に相当し、通信網13を介してサーバ12から送信されてきた各種のパケットを受信する。通信部91は、受信したパケットをRTP処理部92またはRTT処理部96に供給する。
RTP処理部92は、通信部91が受信し、通信部91から供給された送信パケットであるRTPパケットから画像データを抽出して、抽出した画像データをバッファ93に供給する。RTP処理部92は、正常に送信パケットを受信できなかった場合、例えば、パケットロスが発生した場合、パケットロスが発生した送信パケットを示す情報をNACK処理部95に供給する。
バッファ93は、RTP処理部92から供給された画像データを一時的に記憶する。
デコーダ94は、エンコーダ71に対応する復号方式で、バッファ93に記憶されている画像データを復号して、復号された画像データを出力する。
NACK処理部95は、RTP処理部92から供給されたパケットロスが発生した送信パケットを示す情報を基に、パケットロスが発生した送信パケットの再送を要求する再送要求パケットを生成して、通信部91に供給する。再送要求パケットは、例えば、後述するNACKパケットである。NACKパケットの詳細は、後述する。
通信部91は、NACK処理部95から供給された再送要求パケットを通信網13を介して相手であるサーバ12に送信する。
RTT処理部96は、通信部91が受信し、通信部91から供給されたRTT計測パケットを取得する。RTT処理部96は、取得したRTT計測パケットのデータ部と同じデータ部を含むRTT計測パケットを生成して、生成したRTT計測パケットを通信部91に供給する。通信部91は、RTT処理部96から供給されたRTT計測パケットを通信網13を介して相手であるサーバ12に送信する。RTT計測パケットの詳細は、後述する。
なお、図3または図4で示されるサーバ12またはクライアント14の機能は、ハードウェアにより実現するようにしてもよく、ソフトウェア(プログラム)により実現するようにしてもよい。
次に、図5のフローチャートを参照して、送信プログラムを実行するサーバ12による、送信の処理を説明する。ステップS11において、サーバ12は、送信の処理に必要なデータを初期化する。例えば、ステップS11において、サーバ12のエンコーダ71は、内蔵しているタイマおよび送信レートを初期値に設定する。より具体的には、例えば、エンコーダ71は、タイマの値を0に設定して、送信レートを1Mbpsに設定する。
ステップS12において、エンコーダ71は、タイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していない場合、ステップS12に戻り、タイマが終了するまで、判定の処理を繰り返す。
例えば、ステップS12において、エンコーダ71は、タイマの値と、33msとを比較することにより、タイマが終了したか否かを判定する。この場合における、タイマの値と比較される33msは、フレームの数が1秒当たり30である場合の例であり、本発明を限定するものではない。
なお、初期化の処理において、タイマの値を33msなどの所定の値に設定して、時間の経過に対応してタイマの値が減少するようにして、比較の処理において、タイマの値が0であるか否かを判定するようにしてもよい。以下に説明するタイマに関する処理において、同様である。
ステップS12において、タイマが終了したと判定された場合、ステップS13に進み、カメラ11から供給された画像データをキャプチャする。ステップS13において、例えば、エンコーダ71は、カメラ11から供給された画像データのうち、1フレーム分をキャプチャする。
ステップS14において、エンコーダ71は、キャプチャされた画像データを、エンコード(符号化)する。例えば、ステップS14において、エンコーダ71は、キャプチャされた画像データを、設定された送信レートとなるように、JPEG(Joint Photographic Experts Group)、JPEG2000、またはモーションJPEGなどの方式により符号化する。
例えば、ステップS14において、エンコーダ71は、レート制御部76の指示に基づいて、画像データが格納される送信パケットが所定の送信レートとなるように、所定のレートで画像データを符号化する。
ステップS15において、パケタイザ72は、符号化された画像データを格納するRTP(Real-time Transport Protocol)パケットを生成する。RTPパケットは、送信パケットの一例である。
図6は、RTPパケットを説明する図である。RTPパケットの先頭には、図6において”v”で表される、2ビットのバージョン情報が配置される。バージョン情報は、RTPパケットのバージョンを示す。
バージョン情報の次に1ビットのパディングが配置され、パディングに続いて、1ビットの拡張情報がRTPパケットに配置される。拡張情報は、図6において、”x”で表される。拡張情報は、RTPパケットに拡張ヘッダを配置する場合に、所定の値に設定される。
拡張情報に続いて、CSRC(Contributing Source)カウントがRTPパケットに配置される。CSRCカウントは、図6中において、”cc”で表される。CSRCカウントは、CSRC識別子の数を表す。
CSRCカウントに続いて配置される、1ビットのメーカー情報は、プロファイルによって定義される。メーカー情報は、図6中において、”m”で表される。
メーカー情報に続いて配置される、7ビットのペイロードタイプは、RTPパケットのフォーマットを定義するための情報である。ペイロードタイプは、図6中において、”Pt”で表される。RTPパケットにおいて、ペイロードタイプは、33とされる。
シーケンス番号は、ペイロードタイプの次に配置される、16ビットの情報である。シーケンス番号は、RTPパケットの送信の度に、1ずつ増える。シーケンス番号は、パケットロスを検出し、RTPパケットの順序を修復するために使用される。
シーケンス番号の次に配置される、32ビットのタイムスタンプは、そのRTPパケットに格納されているストリーミングデータの最初のオクテットがサンプルされた時刻を示す情報である。
SSRC(Synchronization source)識別子は、タイムスタンプの次に配置される、32ビットの情報であって、RTPパケットに格納されるストリーミングデータのソースを示す。
RTPパケットにおいて、SSRC識別子の次には、ストリーミングデータが格納される。図6において、”Original Data”は、ストリーミングデータを示す。
図5に戻り、ステップS16において、パケタイザ72は、RTPパケットを再送用バッファ73に供給して、再送用バッファ73にRTPパケットを再送パケットとして格納させる。
なお、送信パケットと再送パケットとは、例えば、RTPパケットである、同じパケットであるが、説明のために、送信パケットと再送パケットとを区別する。
ステップS17において、パケタイザ72は、生成したRTPパケットを通信部39に供給して、通信部39は、パケタイザ72から供給されたRTPパケットを送信する。
ステップS18において、パケタイザ72は、RTPパケットに付加するRTPタイムスタンプを更新する。ステップS19において、エンコーダ71は、内蔵しているタイマをセットして、ステップS12に戻り、上述した処理を繰り返す。
例えば、ステップS19において、エンコーダ71は、タイマの値を0をセットする。
このように、サーバ12は、通信網13を介して、例えば、画像であるストリーミングデータが格納されているRTPパケットをクライアント14に送信する。
次に、図7のフローチャートを参照して、送信プログラムを実行するサーバ12による、送信レートの更新の処理を説明する。ステップS31において、RTT計測部74は、タイマを初期化する。例えば、ステップS31において、RTT計測部74は、タイマの値を0に設定することにより初期化する。
ステップS32において、NACK処理部75は、通信部39が受信し、通信部39から供給されたパケットを基に、NACKパケットを受信したか否かを判定する。ステップS32において、NACKパケットを受信したと判定された場合、ステップS33に進み、NACK処理部75、再送用バッファ73、および通信部39は、再送の処理を実行して、手続きは、ステップS32に戻り、送信レートの更新の処理を繰り返す。再送の処理の詳細は、後述する。
図8は、NACKパケットを説明する図である。バージョン情報、パディング、およびSSRC識別子は、図6で示されるRTPパケットの場合と同様であるので、その説明は省略する。
NACKパケットにおいて、ペイロードタイプは、204とされる。ペイロードタイプの次に配置される、16ビットのメッセージ長は、NACKパケットの長さ(サイズ)を示す情報である。
NACKパケットにおいて、32ビットのSSRC識別子に続いて、32ビットの名前が配置される。名前は、例えば、NACKパケットを取り扱うアプリケーションプログラムの名前である。
名前に続いて配置される32ビットの要求シーケンス番号は、パケットロスが発生したRTPパケット、すなわち、クライアント14によって再送が要求されるパケットを特定するシーケンス番号を示す。
ステップS32において、NACKパケットを受信していないと判定された場合、ステップS34に進み、RTT計測部74は、通信部39が受信し、通信部39から供給されたパケットを基に、RTT計測パケットを受信したか否かを判定する。ステップS34において、RTT計測パケットを受信したと判定された場合、ステップS35に進み、RTT計測部74は、往復伝搬遅延時間を計算する。
ステップS36において、RTT計測部74は、ステップS35の処理で計算された往復伝搬遅延時間を記憶する。なお、ステップS36において、RTT計測部74は、前回の往復伝搬遅延時間とは別に、今回の往復伝搬遅延時間を記憶する。
図9は、RTT計測パケットを説明する図である。バージョン情報、パディング、およびSSRC識別子、および名前は、図8で示されるNACKパケットの場合と同様であるので、その説明は省略する。
RTT計測パケットにおいて、ペイロードタイプは、205とされる。
RTT計測パケットにおいて名前の次に格納される送信時刻は、サーバ12がクライアント14に、そのRTT計測パケットを送信した時刻を示す。
また、クライアント14は、RTT計測パケットの送信時刻をそのままにして、サーバ12にそのRTT計測パケットを即座に返送するので、サーバ12が受信したRTT計測パケットに格納される送信時刻は、クライアント14がサーバ12に送信してきたRTT計測パケットに対応するRTT計測パケットをサーバ12がクライアント14に送信した時刻を示す。
従って、サーバ12は、RTT計測パケットの送信時刻を現在時刻から引き算することにより、往復伝搬遅延時間を計算することができる。
すなわち、例えば、ステップS35において、RTT計測部74は、図示せぬリアルタイムクロックによって示されるRTT計測パケットを受信した時刻から、RTT計測パケットに格納されている送信時刻を引き算することにより、往復伝搬遅延時間を計算する。
ステップS37において、RTT計測部74は、ステップS36の処理により今回の往復伝搬遅延時間と前回の往復伝搬遅延時間とを記憶しているので、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を1.1倍した値より大きいか否かを判定する。ステップS37において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を1.1倍した値より大きいと判定された場合、往復伝搬遅延時間が増加しているので、ステップS38に進み、RTT計測部74は、遅延時間状態を増加状態として、遅延時間状態が増加状態であることを示す信号をレート制御部76に供給する。
ステップS39において、レート制御部76は、送信レート状態の遷移の処理を実行する。送信レート状態の遷移の処理の詳細は、後述する。
ステップS40において、レート制御部76は、ステップS39の処理で決定された送信レート状態を基に、送信レートを更新して、ステップS32に戻り、送信レートの更新の処理を繰り返す。例えば、ステップS40において、レート制御部76は、ステップS39の処理で決定された送信レート状態を基に、エンコーダ71の符号化のビットレートを制御することにより、通信部39における送信パケットの送信レートを更新する。
より詳細には、例えば、ステップS40において、レート制御部76は、送信レート状態がレート維持状態である場合、エンコーダ71の符号化のビットレートを、変更させずに、一定状態とするように制御することにより、通信部39における送信パケットの送信レートを変更させずに、一定状態とする。例えば、ステップS40において、レート制御部76は、送信レート状態がレート増加状態である場合、エンコーダ71の符号化のビットレートを、現在の1.1倍とするように制御することにより、通信部39における送信パケットの送信レートを1.1倍に増加させる。また、例えば、ステップS40において、レート制御部76は、送信レート状態がレート減少状態である場合、エンコーダ71の符号化のビットレートを、現在の0.9倍とするように制御することにより、通信部39における送信パケットの送信レートを0.9倍に減少させる。
なお、通信部39における送信パケットの送信レートに、上限および下限を設けるようにしてもよい。また、エンコーダ71における符号化のビットレートに、上限および下限を設けるようにしてもよい。
ステップS37において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を1.1倍した値より大きくないと判定された場合、ステップS41に進み、RTT計測部74は、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を0.9倍した値より小さいか否かを判定する。ステップS41において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を0.9倍した値より小さいと判定された場合、往復伝搬遅延時間が減少しているので、ステップS42に進み、RTT計測部74は、遅延時間状態を減少状態として、遅延時間状態が減少状態であることを示す信号をレート制御部76に供給する。ステップS42の処理の後、手続きは、ステップS39に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップS32に戻り、送信レートの更新の処理を繰り返す。
ステップS41において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を0.9倍した値より小さくないと判定された場合、往復伝搬遅延時間がほぼ一定しているので、ステップS43に進み、RTT計測部74は、遅延時間状態を一定状態として、遅延時間状態が一定状態であることを示す信号をレート制御部76に供給する。ステップS43の処理の後、手続きは、ステップS39に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップS32に戻り、送信レートの更新の処理を繰り返す。
一方、ステップS34において、RTT計測パケットを受信していないと判定された場合、新たに往復伝搬遅延時間を計算することはできないので、ステップS44に進み、RTT計測部74は、タイマが終了したか否かを判定する。例えば、ステップS34において、RTT計測部74は、タイマの値と、予め定めたRTT計測パケットを送信する間隔とを比較することにより、タイマが終了したか否かを判定する。
ステップS44において、タイマが終了したと判定された場合、ステップS45に進み、RTT計測部74は、RTT計測パケットを生成して、生成されたRTT計測パケットを通信部39に供給して、通信部39に通信網13を介してRTT計測パケットをクライアント14宛に送信させる。
ステップS46において、RTT計測部74は、タイマをセットして、ステップS32に戻り、送信レートの更新の処理を繰り返す。例えば、ステップS46において、RTT計測部74は、タイマの値を0に設定する。
ステップS44において、タイマが終了していないと判定された場合、RTT計測パケットを送信する必要はないので、ステップS32に戻り、送信レートの更新の処理を繰り返す。
このように、サーバ12は、RTT計測パケットを受信した場合、通信網13の往復伝搬遅延時間に基づいて、送信レートを更新する。
次に、図10のフローチャートを参照して、図7のステップS39の処理に対応する送信レート状態の遷移の処理の詳細を説明する。ステップS61において、レート制御部76は、自分が記憶している送信レート状態を基に、送信レート状態がレート維持状態であるか否かを判定し、送信レート状態がレート維持状態であると判定された場合、ステップS62に進み、RTT計測部74から供給された信号を基に、遅延時間状態が増加状態であるか否かを判定する。
ステップS62において、遅延時間状態が増加状態であると判定された場合、ステップS63に進み、レート制御部76は、自分が記憶している、レート維持状態である送信レート状態をレート減少状態に遷移させて、処理は終了する。
ステップS62において、遅延時間状態が増加状態でないと判定された場合、ステップS64に進み、レート制御部76は、RTT計測部74から供給された信号を基に、遅延時間状態が減少状態であるか否かを判定する。
ステップS64において、遅延時間状態が減少状態であると判定された場合、ステップS65に進み、レート制御部76は、自分が記憶している、レート維持状態である送信レート状態をレート増加状態に遷移させて、処理は終了する。
ステップS64において、遅延時間状態が減少状態でないと判定された場合、遅延時間状態は一定状態なので、ステップS66に進み、レート制御部76は、自分が記憶している、レート維持状態である送信レート状態を維持して(状態を遷移させないで)、処理は終了する。
ステップS61において、送信レート状態がレート維持状態でないと判定された場合、ステップS67に進み、レート制御部76は、自分が記憶している送信レート状態を基に、送信レート状態がレート増加状態であるか否かを判定する。
ステップS67において、送信レート状態がレート増加状態であると判定された場合、ステップS68に進み、レート制御部76は、RTT計測部74から供給された信号を基に、遅延時間状態が増加状態であるか否かを判定する。
ステップS68において、遅延時間状態が増加状態であると判定された場合、ステップS69に進み、レート制御部76は、自分が記憶している、レート増加状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
ステップS68において、遅延時間状態が増加状態でないと判定された場合、遅延時間状態は減少状態であるか、または一定状態なので、ステップS70に進み、レート制御部76は、自分が記憶している、レート増加状態である送信レート状態を維持して(状態を遷移させないで)、処理は終了する。
ステップS67において、送信レート状態がレート増加状態でないと判定された場合、送信レート状態はレート減少状態なので、ステップS71に進み、レート制御部76は、RTT計測部74から供給された信号を基に、遅延時間状態が減少状態であるか否かを判定する。
ステップS71において、遅延時間状態が減少状態であると判定された場合、ステップS72に進み、レート制御部76は、自分が記憶している、レート減少状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
ステップS71において、遅延時間状態が減少状態でないと判定された場合、遅延時間状態は増加状態であるか、または一定状態なので、ステップS73に進み、レート制御部76は、自分が記憶している、レート減少状態である送信レート状態を維持して(状態を遷移させないで)、処理は終了する。
このように、レート制御部76は、遅延時間状態に基づいて、送信レート状態を遷移させるか、維持させる。
図11は、送信レート状態の状態遷移図である。図11のSは、レート維持状態を示し、Uは、レート増加状態を示し、Dは、レート減少状態を示す。
なお、レート維持状態は、処理を開始する場合の初期状態でもある。
送信レート状態がレート維持状態である場合、遅延時間状態が増加状態であるとき、送信レート状態は、レート減少状態に遷移する。送信レート状態がレート維持状態である場合、遅延時間状態が減少状態であるとき、送信レート状態は、レート増加状態に遷移する。送信レート状態がレート維持状態である場合、遅延時間状態が一定状態であるとき、送信レート状態は、遷移しないで、レート維持状態に維持される。
送信レート状態がレート増加状態である場合、遅延時間状態が増加状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート増加状態である場合、遅延時間状態が一定状態または減少状態であるとき、送信レート状態は、遷移しないで、レート増加状態に維持される。
送信レート状態がレート減少状態である場合、遅延時間状態が減少状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート減少状態である場合、遅延時間状態が一定状態または増加状態であるとき、送信レート状態は、遷移しないで、レート減少状態に維持される。
次に、図12のフローチャートを参照して、図7のステップS33の処理に対応する再送の処理の詳細を説明する。ステップS91において、NACK処理部75は、レート制御部76から供給される信号を基に、送信レート状態がレート増加状態であるか否かを判定し、送信レート状態がレート増加状態であると判定された場合、通信網13に再送パケットをさらに伝送できる余裕があるので、ステップS92に進み、要求されたシーケンス番号のRTPパケットを再送して、処理は終了する。すなわち、例えば、ステップS92において、NACK処理部75は、再送用バッファ73に、受信したNACKパケットの要求シーケンス番号によって特定される、再送パケットであるRTPパケットを通信部39に供給させる。そして、通信部39は、再送用バッファ73から供給された再送パケットであるRTPパケットを通信網13を介してクライアント14に送信する。
ステップS91において、送信レート状態がレート増加状態でないと判定された場合、ステップS93に進み、NACK処理部75は、レート制御部76から供給される信号を基に、送信レート状態がレート減少状態であるか否かを判定する。ステップS93において、送信レート状態がレート減少状態であると判定された場合、通信網13に再送パケットをさらに伝送できる余裕がないので、再送パケットを再送しないで、処理は終了する。
ステップS93において、送信レート状態がレート減少状態でないと判定された場合、送信レート状態がレート維持状態なので、ステップS94に進み、NACK処理部75は、モードスイッチ設定部78により設定されたモードスイッチがオンであるか否かを判定する。
なお、モードスイッチのオンまたはオフは、再送パケットの再送を制御するモードの一例である。
ステップS94において、モードスイッチがオンであると判定された場合、レート維持状態における再送パケットの再送が指示されているので、ステップS95に進み、NACK処理部75は、ステップS92の処理と同様の処理で、要求されたシーケンス番号のRTPパケットを再送して、処理は終了する。
ステップS94において、モードスイッチがオンでないと判定された場合、モードスイッチがオフであり、レート維持状態における再送パケットの再送が禁止されているので、再送パケットを再送しないで、処理は終了する。
このように、サーバ12は、通信網13の伝送状態に応じて、送信レートを制御すると共に、送信レートの制御の状態に対応して、再送パケットを再送するかまたは再送を禁止する。例えば、サーバ12は、クライアント14から、正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、レート制御部76が送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、レート制御部76が送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する。
すなわち、再送パケットは、通信網13に再送パケットをさらに伝送できる余裕がある場合、再送され、通信網13に再送パケットをさらに伝送できる余裕がない場合、再送されない。これにより、通信網13に再送パケットをさらに伝送できる余裕がない場合、再送パケットの再送を禁止するので、通信網13への負荷、すなわち、送信レートが適正に制御することができる。
同時に、通信網13に再送パケットをさらに伝送できる余裕がある場合、再送パケットが送信されるので、クライアント14に、より確実に到達するように再送パケットを送信することができる。
次に、RTT計測パケットまたはレシーバレポートパケットを受信した場合に実行される、モードスイッチの設定の処理を説明する。
図13は、モードスイッチの設定の処理を説明するフローチャートである。
ステップS121において、モードスイッチ設定部78は、使用者の操作に対応した入力部36からの信号を取得して、取得された信号の値から、使用者からモードスイッチのオンが指示されたか否かを判定する。ステップS121において、モードスイッチのオンが指示されたと判定された場合、ステップS122に進み、モードスイッチ設定部78は、モードスイッチをオンに設定して、モードスイッチがオンであることを示す信号をNACK処理部75に供給して、ステップS121に戻り、モードスイッチの設定の処理を繰り返す。
ステップS121において、モードスイッチのオンが指示されていないと判定された場合、ステップS123に進み、モードスイッチ設定部78は、使用者の操作に対応した入力部36からの信号を取得して、取得された信号の値から、使用者からモードスイッチのオフが指示されたか否かを判定する。
ステップS123において、モードスイッチのオフが指示されたと判定された場合、ステップS124に進み、モードスイッチ設定部78は、モードスイッチをオフに設定して、モードスイッチがオフであることを示す信号をNACK処理部75に供給して、ステップS121に戻り、モードスイッチの設定の処理を繰り返す。
ステップS123において、モードスイッチのオフが指示されていないと判定された場合、使用者からの指示がないので、ステップS125に進み、モードスイッチ設定部78は、RTT計測部74から供給された往復伝搬遅延時間を示す信号を基に、往復伝搬遅延時間が予め定めた閾値以下であるか否かを判定する。ステップS125において、往復伝搬遅延時間が予め定めた閾値以下であると判定された場合、ステップS126に進み、モードスイッチ設定部78は、RTCP解析部77から供給された、クライアント14における送信パケットであるRTPパケットのロス率を示す情報を基に、ロス率が予め定めた閾値以下であるか否かを判定する。
例えば、ステップS125の処理において、往復伝搬遅延時間と比較される閾値は、100msとすることができる。例えば、ステップS126の処理において、ロス率と比較される閾値は、5%とすることができる。
ステップS126において、ロス率が予め定めた閾値以下であると判定された場合、ステップS122に進み、モードスイッチ設定部78は、モードスイッチをオンに設定して、モードスイッチがオンであることを示す信号をNACK処理部75に供給して、ステップS121に戻り、モードスイッチの設定の処理を繰り返す。
ステップS125において、往復伝搬遅延時間が予め定めた閾値以下でないと判定された場合、またはステップS126において、ロス率が予め定めた閾値以下でないと判定された場合、ステップS124に進み、モードスイッチ設定部78は、モードスイッチをオフに設定して、モードスイッチがオフであることを示す信号をNACK処理部75に供給して、ステップS121に戻り、モードスイッチの設定の処理を繰り返す。
なお、往復伝搬遅延時間またはロス率のいずれか一方が予め定めた閾値以下である場合に、モードスイッチをオンに設定するようにしてもよい。
このように、モードスイッチ設定部78は、使用者の指示に基づいて、モードスイッチを設定するか、または通信網13の伝送状態を基に、モードスイッチを設定する。このようにすることで、レート維持状態において、使用者の要求に応じて、サーバ12は、クライアント14に再送パケットを送信することができる。
また、通信網13の伝送状態を基に、モードスイッチを設定するようにした場合、レート維持状態において、サーバ12は、送信パケットの伝送への影響をより少なくして、ライアント14に再送パケットを送信することができる。
次に、図14のフローチャートを参照して、通信プログラムを実行するクライアント14のデコードの処理を説明する。ステップS151において、デコーダ94は、デコードの処理に必要なデータを初期化する。例えば、ステップS151において、デコーダ94は、500msの期間、待ち状態となって待機して、バッファ93が、所定の量の画像データを記憶するまで待つ。また、例えば、画像データが1秒当たり30フレームからなる場合、ステップS151において、デコーダ94は、内蔵しているタイマの値を33msに設定する。
ステップS152において、デコーダ94は、タイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していない場合、ステップS152に戻り、タイマが終了するまで、判定の処理を繰り返す。
例えば、ステップS152において、時間の経過に対応して減算されるタイマの値が、0になったか否かを基に、デコーダ94は、タイマが終了したか否かを判定する。
ステップS152において、タイマが終了したと判定された場合、ステップS153に進み、デコーダ94は、バッファ93から1フレーム分のデータを取得する。ステップS154において、デコーダ94は、ステップS153の処理で取得したデータをデコードして、デコードにより得られた画像データを出力する。
ステップS155において、デコーダ94は、内蔵しているタイマをセットして、ステップS151に戻り、上述した処理を繰り返す。例えば、ステップS19において、デコーダ94は、内蔵しているタイマの値を33msに設定する。
ステップS152において、タイマが終了していないと判定された場合、ステップS156に進み、通信部91は、パケットを受信し、受信したパケットをRTP処理部92に供給する。ステップS157において、RTP処理部92は、RTPパケットを受信したか否かを判定し、RTPパケットを受信したと判定された場合、ステップS158に進み、受信したRTPパケットを基に、RTPパケットを正常に受信できなかったか否か、すなわち、パケットロスが発生したか否かを判定する。
ステップS158において、パケットロスが発生したと判定された場合、ステップS159において、RTP処理部92は、パケットロスが発生したことを示す信号をNACK処理部95に供給して、NACK処理部95は、NACKパケットを生成して、生成したNACKパケットを通信部91に供給する。そして、NACK処理部95は、通信部91に、通信網13を介して、ロスパケットに対応するNACKパケットをサーバ12宛てに送信させて、ステップS151に戻り、上述した処理を繰り返す。
ステップS157において、RTPパケットを受信していないと判定された場合、または、ステップS158において、パケットロスが発生していないと判定された場合、再送を要求する必要がないので、ステップS159の処理をスキップして、NACKパケットを送信することなく、ステップS151に戻り、上述した処理を繰り返す。
このように、クライアント14は、パケットロスが発生した場合、再送を要求するNACKパケットをサーバ12に送信する。
次に、図15のフローチャートを参照して、RTT計測パケットの返信の処理を説明する。ステップS181において、RTT処理部96は、通信部91がパケットを受信した場合に、通信部91から供給されたパケットを基に、RTT計測パケットを受信したか否かを判定し、RTT計測パケットを受信していないと判定された場合、ステップS181に戻り、RTT計測パケットが受信されるまで、判定の処理を繰り返す。
ステップS181において、RTT計測パケットを受信したと判定された場合、ステップS182に進み、RTT処理部96は、直ちに、受信したRTT計測パケットのデータ部(図9のヘッダを除いた部分)と同様のデータ部のRTT計測パケットを生成して、生成したRTT計測パケットを通信部91に供給する。そして、RTT処理部96は、通信部91に、通信網13を介して、RTT計測パケットをサーバ12宛てに直ちに送信させて、ステップS181に戻り、上述した処理を繰り返す。
このように、クライアント14は、RTT計測パケットを受信すると、直ちに、サーバ12にRTT計測パケットを返送する。
図16は、以上で説明した、本発明に係る通信システムによる、再送パケットの再送の処理を説明する図である。
図16Aで示されるように、サーバ12がクライアント14に、通信網13を介して、RTT計測パケットを送信して、クライアント14が、RTT計測パケットを受信した場合、通信網13を介して、受信したRTT計測パケットに対応するRTT計測パケットを直ちに返送する。
上述したようにRTT計測パケットには、サーバ12がクライアント14に送信した時刻が格納されているので、サーバ12は、クライアント14から返送されたRTT計測パケットを受信した場合、現在時刻から、RTT計測パケットに格納されている時刻を引き算することにより、往復伝搬遅延時間を算出する。
図16Bは、送信レート状態の遷移およびモードスイッチの設定の例を示す図である。図16Cは、サーバ12とクライアント14との送信パケット、NACKパケット、および再送パケットの送信の例を示す図である。
図16Bで示されるように、例えば、送信レート状態がレート減少状態である場合、図16Cで示されるように、クライアント14が、サーバ12から送信されてきた送信パケット101−1を正常に受信できず、送信パケット101−2を正常に受信できたとき、クライアント14は、送信パケット101−1に対応する再送パケットを要求するNACKパケットをサーバ12に送信するが、サーバ12は、要求された再送パケットを再送しない。
例えば、送信レート状態がレート減少状態(図16B中のDで示される状態)である場合、往復伝搬遅延時間が1.0から0.8に変化したとき、送信レート状態は、レート維持状態(図16B中のSで示される状態)に遷移する。
レート維持状態において、モードスイッチがオフである場合、クライアント14が、サーバ12から送信されてきた送信パケット101−3を正常に受信できず、送信パケット101−4を正常に受信できたとき、送信パケット101−3に対応する再送パケットを要求するNACKパケットをサーバ12に送信するが、サーバ12は、要求された再送パケットを再送しない。
例えば、送信レート状態がレート維持状態である場合、往復伝搬遅延時間が0.8から0.5に変化したとき、送信レート状態は、レート増加状態(図16B中のUで示される状態)に遷移する。
クライアント14が、サーバ12から送信されてきた送信パケット101−5を正常に受信できず、送信パケット101−6を正常に受信できたとき、クライアント14は、送信パケット101−5に対応する再送パケットを要求するNACKパケットをサーバ12に送信する。レート増加状態において、NACKパケットを受信したサーバ12は、送信パケット101−5に対応する再送パケット102−5をクライアント14に再送する。
例えば、送信レート状態がレート増加状態である場合、往復伝搬遅延時間が0.5から0.8に変化したとき、送信レート状態は、レート維持状態に遷移する。
クライアント14が、サーバ12から送信されてきた送信パケット101−7を正常に受信できず、送信パケット101−8を正常に受信できたとき、クライアント14は、送信パケット101−7に対応する再送パケットを要求するNACKパケットをサーバ12に送信する。レート維持状態において、モードスイッチがオンである場合、NACKパケットを受信したサーバ12は、送信パケット101−7に対応する再送パケット102−7をクライアント14に再送する。
サーバ12は、往復伝搬遅延時間に限らず、通信網13の他の伝送状態を基に、送信レートを更新することができる。例えば、サーバ12は、パケットのロス率を基に、送信レートを更新することができる。
次に、図17のフローチャートを参照して、パケットのロス率を基にした、送信レートの更新の他の処理を説明する。ステップS201乃至ステップS203の処理は、図7におけるステップS31乃至ステップS33の処理と同様なので、その説明は省略する。
ステップS204において、RTCP解析部77は、通信部39が受信し、通信部39から供給されたパケットを基に、レシーバレポートパケットを受信したか否かを判定する。例えば、レシーバレポートパケットは、RFC1889に基づく方式を有する。ステップS204において、レシーバレポートを受信したと判定された場合、ステップS205に進み、RTCP解析部77は、ロス率を抽出する。
図18は、レシーバレポートパケットを説明する図である。バージョン情報、パディング、およびメッセージ長は、図8示されるNACKパケットの場合と同様であるので、その説明は省略する。
レシーバレポートパケットにおいて、ペイロードタイプは、201とされる。
レシーバレポートパケットには、さらに、送信者の同期ソース識別子、パケットロス率、累積喪失パケット数、最大受信シーケンス番号、パケット間隔ジッタ、最新送信レポート時刻、および送信レポート経過時間が格納されている。
送信者の同期ソース識別子は、例えば、クライアント14を特定する識別子である。パケットロス率は、クライアント14における、送信パケットであるRTPパケットのロス率を示す。
最大受信シーケンス番号は、クライアント14において受信されたRTPパケットに格納されているシーケンス番号のうち、最大のシーケンス番号を示す。パケット間隔ジッタは、クライアント14において受信されたRTPパケットのジッタを示す。
最新送信レポート時刻および送信レポート経過時間は、レシーバレポートパケットの送信に関する情報である。
例えば、ステップS205において、RTCP解析部77は、レシーバレポートパケットからパケットロス率を抽出する。
ステップS206において、RTCP解析部77は、ロス率を記憶する。例えば、ステップS206において、RTCP解析部77は、前回のロス率とは別に、今回のロス率を記憶する。
ステップS207において、RTT計測部74は、今回のロス率が、前回のロス率を1.1倍した値より大きいか否かを判定し、今回のロス率が、前回のロス率を1.1倍した値より大きいと判定された場合、ロス率が増加しているので、ステップS208に進み、ロス率状態を増加状態として、ロス率状態が増加状態であることを示す信号をレート制御部76に供給する。
ステップS209において、レート制御部76は、送信レート状態の遷移の処理を実行する。送信レート状態の遷移の処理の詳細は、後述する。
ステップS210において、レート制御部76は、図7のステップS40の処理と同様の処理で、ステップS209の処理で決定された送信レート状態を基に、送信レートを更新して、ステップS202に戻り、送信レートの更新の処理を繰り返す。
ステップS207において、今回のロス率が、前回のロス率を1.1倍した値より大きくないと判定された場合、ステップS211に進み、RTCP解析部77は、今回のロス率が、前回のロス率を0.9倍した値より小さいか否かを判定する。ステップS211において、今回のロス率が、前回のロス率を0.9倍した値より小さいと判定された場合、ロス率が減少しているので、ステップS212に進み、RTCP解析部77は、ロス率状態を減少状態として、ロス率状態が減少状態であることを示す信号をレート制御部76に供給する。ステップS212の処理の後、手続きは、ステップS209に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップS202に戻り、送信レートの更新の処理を繰り返す。
ステップS211において、今回のロス率が、前回のロス率を0.9倍した値より小さくないと判定された場合、ロス率がほぼ一定しているので、ステップS213に進み、RTCP解析部77は、遅延時間状態を一定状態として、遅延時間状態が一定状態であることを示す信号をレート制御部76に供給する。ステップS213の処理の後、手続きは、ステップS209に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップS202に戻り、送信レートの更新の処理を繰り返す。
このように、パケットのロス率を基に、送信レートを更新することができる。
次に、図19のフローチャートを参照して、図17のステップS209の処理に対応する送信レート状態の遷移の処理の詳細を説明する。ステップS231において、レート制御部76は、自分が記憶している送信レート状態を基に、送信レート状態がレート維持状態であるか否かを判定し、送信レート状態がレート維持状態であると判定された場合、ステップS232に進み、RTCP解析部77から供給された信号を基に、ロス率状態が増加状態であるか否かを判定する。
ステップS232において、ロス率状態が増加状態であると判定された場合、ステップS233に進み、レート制御部76は、自分が記憶している、レート維持状態である送信レート状態をレート減少状態に遷移させて、処理は終了する。
ステップS232において、ロス率状態が増加状態でないと判定された場合、ステップS234に進み、レート制御部76は、RTCP解析部77から供給された信号を基に、ロス率状態が減少状態であるか否かを判定する。
ステップS234において、ロス率状態が減少状態であると判定された場合、ステップS235に進み、レート制御部76は、自分が記憶している、レート維持状態である送信レート状態をレート増加状態に遷移させて、処理は終了する。
ステップS234において、ロス率状態が減少状態でないと判定された場合、ロス率状態は一定状態なので、ステップS236に進み、レート制御部76は、自分が記憶している、レート維持状態である送信レート状態を維持して(状態を遷移させないで)、処理は終了する。
ステップS231において、送信レート状態がレート維持状態でないと判定された場合、ステップS237に進み、レート制御部76は、自分が記憶している送信レート状態を基に、送信レート状態がレート増加状態であるか否かを判定する。
ステップS237において、送信レート状態がレート増加状態であると判定された場合、ステップS238に進み、レート制御部76は、RTCP解析部77から供給された信号を基に、ロス率状態が増加状態であるか否かを判定する。
ステップS238において、ロス率状態が増加状態であると判定された場合、ステップS239に進み、レート制御部76は、自分が記憶している、レート増加状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
ステップS238において、ロス率状態が増加状態でないと判定された場合、ロス率状態は減少状態であるか、または一定状態なので、ステップS240に進み、レート制御部76は、自分が記憶している、レート増加状態である送信レート状態を維持して(状態を遷移させないで)、処理は終了する。
ステップS237において、送信レート状態がレート増加状態でないと判定された場合、送信レート状態はレート減少状態なので、ステップS241に進み、レート制御部76は、RTCP解析部77から供給された信号を基に、ロス率状態が減少状態であるか否かを判定する。
ステップS241において、ロス率状態が減少状態であると判定された場合、ステップS242に進み、レート制御部76は、自分が記憶している、レート減少状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
ステップS241において、ロス率状態が減少状態でないと判定された場合、ロス率状態は増加状態であるか、または一定状態なので、ステップS243に進み、レート制御部76は、自分が記憶している、レート減少状態である送信レート状態を維持して(状態を遷移させないで)、処理は終了する。
このように、レート制御部76は、ロス率状態に基づいて、送信レート状態を遷移させるか、維持させる。
図20は、ロス率状態に基づく、送信レート状態の状態遷移図である。図20のSは、レート維持状態を示し、Uは、レート増加状態を示し、Dは、レート減少状態を示す。図11に示す場合と同様に、レート維持状態は、処理を開始する場合の初期状態でもある。
送信レート状態がレート維持状態である場合、ロス率状態が増加状態であるとき、送信レート状態は、レート減少状態に遷移する。送信レート状態がレート維持状態である場合、ロス率状態が減少状態であるとき、送信レート状態は、レート増加状態に遷移する。送信レート状態がレート維持状態である場合、ロス率状態が一定状態であるとき、送信レート状態は、遷移しないで、レート維持状態に維持される。
送信レート状態がレート増加状態である場合、ロス率状態が増加状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート増加状態である場合、ロス率状態が一定状態または減少状態であるとき、送信レート状態は、遷移しないで、レート増加状態に維持される。
送信レート状態がレート減少状態である場合、ロス率状態が減少状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート減少状態である場合、ロス率状態が一定状態または増加状態であるとき、送信レート状態は、遷移しないで、レート減少状態に維持される。
以上のように、本発明においては、通信網13の状態に応じて、送信レートが制御されると共に、送信レートの制御の状態に応じて、パケットを再送するか、または再送が禁止される。
従って、送信レートを下げている場合に、再送要求によって、伝送データ量を増加させてしまうような事態を回避して、送信レートを適正に制御するとともに、相手により確実に到達するように再送パケットを送信することができるようになる。
このように、再送パケットを再送するようにした場合には、受信側において、エラーを訂正することができる。また、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化し、通信網の伝送状態を取得し、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化を指示し、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御するようにした場合には、送信レートを適正に制御するとともに、相手により確実に到達するように再送パケットを送信することができる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図2に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク51(フレキシブルディスクを含む)、光ディスク52(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク53(MD(Mini-Disc)(商標)を含む)、若しくは半導体メモリ54などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM32や、記憶部38に含まれるハードディスクなどで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
12 サーバ, 13 通信網, 14 クライアント, 31 CPU, 32 ROM, 33 RAM, 38 記録部, 51 磁気ディスク, 52 光ディスク, 53 光磁気ディスク, 54 半導体メモリ, 71 エンコーダ, 72 パケタイザ, 73 再送用バッファ, 74 RTT計測部, 75 NACK処理部, 76 レート制御部, 77 RTCP解析部, 78 モードスイッチ設定部, 91 通信部, 92 RTP処理部, 93 バッファ, 94 デコーダ, 95 NACK処理部, 96 RTT処理部