(57)【要約】【課題】送信レートを適正に制御するとともに、相手により確実に到達するように再送パケットを送信する。【解決手段】  エンコーダ７１は、RTPパケットの送信レートが所定の値となるようにストリーミングデータを符号化する。RTT計測部７４は、往復伝搬遅延時間を取得する。レート制御部７６は、往復伝搬遅延時間を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるようにエンコーダ７１に符号化を指示する。NACK処理部７５は、再送用バッファ７３のRTPパケットの再送が要求された場合、送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する。本発明は、遠隔テレビ会議システムに適用できる。【選択図】図３
2005136548.tif 000002
【特許請求の範囲】
【請求項１】
通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信装置において、
前記送信パケットの送信レートが所定の値となるように前記ストリーミングデータを符号化する符号化手段と、
前記通信網の伝送状態を取得する取得手段と、
取得した前記伝送状態を基に、前記送信パケットの前記送信レートを増加させるか、減少させるか、または維持させるように前記符号化手段に符号化を指示する指示手段と、
相手が正常に受信できなかった前記送信パケットに対応する再送パケットの再送が要求された場合、前記指示手段が前記送信レートを増加させるように符号化を指示しているとき、要求された前記再送パケットを再送し、前記指示手段が前記送信レートを減少させるように符号化を指示しているとき、要求された前記再送パケットの再送を禁止するように、前記再送パケットの送信を制御する送信制御手段と
を含むことを特徴とする送信装置。
【請求項２】
使用者の指示または前記通信網の前記伝送状態を基に、前記再送パケットの再送を制御するモードを設定する設定手段をさらに含み、
前記送信制御手段は、前記指示手段が前記送信レートを維持させるように符号化を指示し、相手から前記再送パケットの再送が要求された場合、前記モードがオンに設定されているとき、要求された前記再送パケットを再送し、前記モードがオフに設定されているとき、要求された前記再送パケットの再送を禁止するように、前記再送パケットの送信を制御する
ことを特徴とする請求項１に記載の送信装置。
【請求項３】
設定手段は、前記取得手段で取得された前記伝送状態である、前記通信網の遅延時間が予め定めた第１の閾値以下で、かつ、前記送信パケットのロス率が予め定めた第２の閾値以下である場合、前記モードをオンに設定する
ことを特徴とする請求項２に記載の送信装置。
【請求項４】
前記伝送状態は、前記通信網の遅延時間である
ことを特徴とする請求項１に記載の送信装置。
【請求項５】
前記指示手段は、前記遅延時間が減少している場合、前記送信パケットの前記送信レートを増加させるかまたは維持させるように前記符号化手段に符号化を指示し、前記遅延時間が増加している場合、前記送信パケットの前記送信レートを維持させるかまたは減少させるように前記符号化手段に符号化を指示する
ことを特徴とする請求項４に記載の送信装置。
【請求項６】
前記伝送状態は、前記送信パケットのロス率である
ことを特徴とする請求項１に記載の送信装置。
【請求項７】
前記指示手段は、前記送信パケットのロス率が減少している場合、前記送信パケットの前記送信レートを増加させるかまたは維持させるように前記符号化手段に符号化を指示し、前記送信パケットのロス率が増加している場合、前記送信パケットの前記送信レートを維持させるかまたは減少させるように前記符号化手段に符号化を指示する
ことを特徴とする請求項６に記載の送信装置。
【請求項８】
通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信装置の送信方法において、
前記送信パケットの送信レートが所定の値となるように前記ストリーミングデータを符号化する符号化ステップと、
前記通信網の伝送状態を取得する取得ステップと、
取得した前記伝送状態を基に、前記送信パケットの前記送信レートを増加させるか、減少させるか、または維持させるように前記符号化ステップにおける符号化を指示する指示ステップと、
相手が正常に受信できなかった前記送信パケットに対応する再送パケットの再送が要求された場合、前記指示ステップにおいて前記送信レートを増加させるように符号化が指示されているとき、要求された前記再送パケットを再送し、前記指示ステップにおいて前記送信レートを減少させるように符号化が指示されているとき、要求された前記再送パケットの再送を禁止するように、前記再送パケットの送信を制御する送信制御ステップと
を含むことを特徴とする送信方法。
【請求項９】
通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信処理用のプログラムであって、
前記送信パケットの送信レートが所定の値となるように前記ストリーミングデータを符号化する符号化ステップと、
前記通信網の伝送状態を取得する取得ステップと、
取得した前記伝送状態を基に、前記送信パケットの前記送信レートを増加させるか、減少させるか、または維持させるように前記符号化ステップにおける符号化を指示する指示ステップと、
相手が正常に受信できなかった前記送信パケットに対応する再送パケットの再送が要求された場合、前記指示ステップにおいて前記送信レートを増加させるように符号化が指示されているとき、要求された前記再送パケットを再送し、前記指示ステップにおいて前記送信レートを減少させるように符号化が指示されているとき、要求された前記再送パケットの再送を禁止するように、前記再送パケットの送信を制御する送信制御ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項１０】
通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信処理を、コンピュータに行わせるプログラムにおいて、
前記送信パケットの送信レートが所定の値となるように前記ストリーミングデータを符号化する符号化ステップと、
前記通信網の伝送状態を取得する取得ステップと、
取得した前記伝送状態を基に、前記送信パケットの前記送信レートを増加させるか、減少させるか、または維持させるように前記符号化ステップにおける符号化を指示する指示ステップと、
相手が正常に受信できなかった前記送信パケットに対応する再送パケットの再送が要求された場合、前記指示ステップにおいて前記送信レートを増加させるように符号化が指示されているとき、要求された前記再送パケットを再送し、前記指示ステップにおいて前記送信レートを減少させるように符号化が指示されているとき、要求された前記再送パケットの再送を禁止するように、前記再送パケットの送信を制御する送信制御ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信装置および方法、記録媒体、並びにプログラムに関し、特に、相手が正常に受信できなかったパケットを再送する送信装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
昨今、インターネットなど、種々の通信媒体を介して、画像データまたは音声データを伝送して提供するサービスが一般に行われている。特に、近年、ダウンロード型の伝送方式のサービスに加えて、ストリーム型の伝送方式のサービスがより多く提供されるようになってきた。
【０００３】
ダウンロード型の伝送方式のサービスにおいては、受信装置が、送信装置から送信された画像または音声のデータを格納するファイルを受信し、受信したファイルを自分の記録媒体に記録する。受信装置は、ファイルの記録が完了した後、記録したファイルを基に、画像または音声を再生する。ダウンロード型の伝送方式のサービスにおいては、ファイルの記録が完了するまでは、再生することができないので、ダウンロード型の伝送方式のサービスは、長時間の再生またはリアルタイムの再生には適さない。
【０００４】
一方、ストリーム型の伝送方式のサービスにおいては、受信装置が、送信装置から送信されてくるデータを受信するとともに、これに並行して、受信されたデータを基に画像または音声を再生する。ストリーム型の伝送方式は、インターネット電話、遠隔テレビ会議、またはビデオオンデマンドなどのインターネットサービスに利用されている。
【０００５】
ストリーム型の伝送方式において、送信装置から送信されてくるデータを、一般に、ストリーミングデータと称する。
【０００６】
より具体的な例として、ストリーム型の伝送方式は、画像データにMPEG（Moving Picture Experts Group）符号化処理を適用することにより生成されるMPEGストリームを格納する、IP（Internet Protocol）パケットをインターネットを介して伝送するシステムで使用される。このシステムにおいて、受信装置である、PC（Personal Computer）、PDA（Personal Digital Assistance）、または携帯電話機は、IPパケットを受信し、画像を再生する。
【０００７】
ストリーム型の伝送方式は、ビデオオンデマンド若しくはライブ映像のストリーミング配信、ビデオ会議、またはテレビ電話などのリアルタイム通信に適している。
【０００８】
このようなストリーム型の伝送方式の技術の１つとして、IETF RFC（Internet Engineering Task Force Request For Comments）1889で規定されているプロトコルであるRTP（Real time Transport Protocol）がある。
【０００９】
RTPに基づくデータ転送においては、生成された時刻を示すタイムスタンプがパケットに付加され、タイムスタンプの参照により送信側と受信側の時間的関係が把握されるので、受信側において、パケット伝送の遅延ゆらぎ（ジッター）などの影響が排除され、同期した再生が可能になる。
【００１０】
しかし、RTPにおいて、実時間のデータの伝送は保証されない。すなわち、パケット配信の優先度や設定、管理などは、RTPによって提供されるトランスポートサービスの範疇ではないため、他の方式のパケットと同様、ネットワーク上での遅延やパケットロスが生じる可能性がある。
【００１１】
遅延やパケットロスが生じても、受信側は、再生時刻までに受信されたパケットだけを利用してデータを再生することができる。すなわち、受信装置は、データに多少の損失や誤りが発生しても、品質を落として再生するか、またはデータの損失や誤りを訂正して再生する。
【００１２】
この場合、再生に間に合わず遅延して配送されたパケットやエラーの発生したパケットは、受信側でそのまま破棄される。つまり、高品質なデータ配信処理を行おうとしても、パケットロスやエラーが発生したときは、受信側の再生の品質は保証されない。
【００１３】
このようなRTPに従ったデータ伝送における問題を解決する案として、送信と受信の遅延が少ないARQ（Automatic Repeat Request）を用いることが考えられる。ARQにおいて、パケットロスが生じると、クライアントは、再送要求をサーバに送信し、サーバは、パケットロスが生じたパケットをクライアントに再送する。クライアントは、再送されたパケットを使用することで、ロスしたパケットを復元する。
【００１４】
また、送信側端末が、所定周期毎に制御情報をRTCP（RTP Control Protocol）パケットとして送信し、通信レートが目標レートに到達しない場合には所定周期とは非同期に送信レートを所定割合高くするように設定し、また、受信側端末から送られてきた制御情報に基づいて送信ロスがあったと判断した場合には、所定周期とは非同期に送信レートを所定割合低くするように設定し、いわゆるレート制御を実行するようにしているものもある（例えば、特許文献１参照）。
【００１５】
さらに、再送要求の処理タイミングとして、各フレームの先頭パケットの受信時、各フレームの最終パケットの受信時、最終処理期限、および一定間隔毎等の各種タイミングでロストパケットの検出処理を実行し、再送要求を実行し、データ受信端末が、再生処理時間、伝播遅延時間を考慮し、再生処理に間に合わない場合には、再生要求処理を実行しないようにしているものもある（特許文献２参照）。
【００１６】
【特許文献１】特開平１１−２８４６５９号公報
【００１７】
【特許文献２】特開２００３−１６９０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、レート制御処理と、ロスパケットの再送要求処理とを独立に行った場合、好ましい結果が得られない。
【００１９】
すなわち、送信レートを下げても、再送要求によって、伝送データ量が増加してしまい、さらに送信レートを下げなければならないという悪循環に陥り、ストリーミングデータが相手に到達できなくなってしまう場合があった。
【課題を解決するための手段】
【００２０】
本発明の送信装置は、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化手段と、通信網の伝送状態を取得する取得手段と、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化手段に符号化を指示する指示手段と、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示手段が送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、指示手段が送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御手段とを含むことを特徴とする。
【００２１】
送信装置は、使用者の指示または通信網の伝送状態を基に、再送パケットの再送を制御するモードを設定する設定手段をさらに設け、送信制御手段は、指示手段が送信レートを維持させるように符号化を指示し、相手から再送パケットの再送が要求された場合、モードがオンに設定されているとき、要求された再送パケットを再送し、モードがオフに設定されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御するようにすることができる。
【００２２】
設定手段は、取得手段で取得された伝送状態である、通信網の遅延時間が予め定めた第１の閾値以下で、かつ、送信パケットのロス率が予め定めた第２の閾値以下である場合、モードをオンに設定するようにすることができる。
【００２３】
伝送状態は、通信網の遅延時間とすることができる。
【００２４】
指示手段は、遅延時間が減少している場合、送信パケットの送信レートを増加させるかまたは維持させるように符号化手段に符号化を指示し、遅延時間が増加している場合、送信パケットの送信レートを維持させるかまたは減少させるように符号化手段に符号化を指示するようにすることができる。
【００２５】
伝送状態は、送信パケットのロス率とすることができる。
【００２６】
指示手段は、送信パケットのロス率が減少している場合、送信パケットの送信レートを増加させるかまたは維持させるように符号化手段に符号化を指示し、送信パケットのロス率が増加している場合、送信パケットの送信レートを維持させるかまたは減少させるように符号化手段に符号化を指示するようにすることができる。
【００２７】
本発明の送信方法は、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化ステップと、通信網の伝送状態を取得する取得ステップと、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化ステップにおける符号化を指示する指示ステップと、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示ステップにおいて送信レートを増加させるように符号化が指示されているとき、要求された再送パケットを再送し、指示ステップにおいて送信レートを減少させるように符号化が指示されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御ステップとを含むことを特徴とする。
【００２８】
本発明の記録媒体のプログラムは、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化ステップと、通信網の伝送状態を取得する取得ステップと、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化ステップにおける符号化を指示する指示ステップと、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示ステップにおいて送信レートを増加させるように符号化が指示されているとき、要求された再送パケットを再送し、指示ステップにおいて送信レートを減少させるように符号化が指示されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御ステップとを含むことを特徴とする。
【００２９】
本発明のプログラムは、コンピュータに、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化ステップと、通信網の伝送状態を取得する取得ステップと、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化ステップにおける符号化を指示する指示ステップと、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示ステップにおいて送信レートを増加させるように符号化が指示されているとき、要求された再送パケットを再送し、指示ステップにおいて送信レートを減少させるように符号化が指示されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御ステップとを実行させることを特徴とする。
【００３０】
送信装置は、独立した装置であっても良いし、通信装置の送信処理を行うブロックであっても良い。
【００３１】
本発明の送信装置および方法、記録媒体、並びにプログラムにおいては、送信パケットの送信レートが所定の値となるようにストリーミングデータが符号化され、通信網の伝送状態が取得され、取得された伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化を指示し、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信が制御される。
【発明の効果】
【００３２】
送信レートを適正に制御するとともに、相手により確実に到達するように再送パケットを送信することができるようになる。
【発明を実施するための最良の形態】
【００３３】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００３４】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００３５】
本発明によれば、送信装置が提供される。この送信装置は、送信パケット（例えば、図３のパケタイザ７２から通信部３９に供給されるRTPパケット）の送信レートが所定の値となるようにストリーミングデータを符号化する符号化手段（例えば、図３のエンコーダ７１）と、通信網の伝送状態（例えば、往復伝搬遅延時間）を取得する取得手段（例えば、図３のRTT計測部７４）と、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化手段に符号化を指示する指示手段（例えば、図３のレート制御部７６）と、相手が正常に受信できなかった送信パケットに対応する再送パケット（例えば、再送用バッファ７３に格納されているRTPパケット）の再送が要求された場合、指示手段が送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、指示手段が送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御手段（例えば、図３のNACK処理部７５）とを含む。
【００３６】
この送信装置は、使用者の指示または通信網の伝送状態を基に、再送パケットの再送を制御するモードを設定する設定手段（例えば、図３のモードスイッチ設定部７８）をさらに設け、送信制御手段は、指示手段が送信レートを維持させるように符号化を指示し、相手から再送パケットの再送が要求された場合、モードがオンに設定されているとき（例えば、モードスイッチがオンであるとき）、要求された再送パケットを再送し、モードがオフに設定されているとき（例えば、モードスイッチがオフであるとき）、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御するようにすることができる。
【００３７】
設定手段は、取得手段で取得された伝送状態である、通信網の遅延時間が予め定めた第１の閾値以下で、かつ、送信パケットのロス率が予め定めた第２の閾値以下である場合、モードをオンに設定するようにすることができる。
【００３８】
伝送状態は、通信網の遅延時間（例えば、往復伝搬遅延時間）とすることができる。
【００３９】
指示手段は、遅延時間が減少している場合、送信パケットの送信レートを増加させるかまたは維持させるように符号化手段に符号化を指示し、遅延時間が増加している場合、送信パケットの送信レートを維持させるかまたは減少させるように符号化手段に符号化を指示するようにすることができる。
【００４０】
伝送状態は、送信パケットのロス率とすることができる。
【００４１】
指示手段は、送信パケットのロス率が減少している場合、送信パケットの送信レートを増加させるかまたは維持させるように符号化手段に符号化を指示し、送信パケットのロス率が増加している場合、送信パケットの送信レートを維持させるかまたは減少させるように符号化手段に符号化を指示するようにすることができる。
【００４２】
本発明によれば、送信方法が提供される。この送信方法は、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化ステップ（例えば、図５のステップＳ１４の処理）と、通信網の伝送状態（例えば、往復伝搬遅延時間）を取得する取得ステップ（例えば、図７のステップＳ３５の処理）と、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化ステップにおける符号化を指示する指示ステップ（例えば、図７のステップＳ３６乃至ステップＳ４０の処理）と、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示ステップにおいて送信レートを増加させるように符号化が指示されているとき、要求された再送パケットを再送し、指示ステップにおいて送信レートを減少させるように符号化が指示されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御ステップ（例えば、図１２のステップＳ９１乃至ステップＳ９３の処理）とを含む。
【００４３】
本発明によれば、プログラムが提供される。このプログラムは、コンピュータに、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化する符号化ステップ（例えば、図５のステップＳ１４の処理）と、通信網の伝送状態（例えば、往復伝搬遅延時間）を取得する取得ステップ（例えば、図７のステップＳ３５の処理）と、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化ステップにおける符号化を指示する指示ステップ（例えば、図７のステップＳ３６乃至ステップＳ４０の処理）と、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、指示ステップにおいて送信レートを増加させるように符号化が指示されているとき、要求された再送パケットを再送し、指示ステップにおいて送信レートを減少させるように符号化が指示されているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する送信制御ステップ（例えば、図１２のステップＳ９１乃至ステップＳ９３の処理）とを実行させる。
【００４４】
このプログラムは、記録媒体（例えば、図２の磁気ディスク５１）に記録することができる。
【００４５】
本発明は、例えば、インターネット電話、遠隔テレビ会議システム、ライブ映像ストリーミング配信システム、またはテレビ電話などのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
【００４６】
図１は、本発明に係る通信システムの一実施の形態を示す図である。カメラ１１は、画像を撮像して、撮像した画像に対応する画像データをサーバ１２に供給する。例えば、カメラ１１は、動画像を撮像して、動画像に対応する画像データをサーバ１２に供給する。
【００４７】
画像データは、ストリーミングデータの一例である。ストリーミングデータは、音声のデータ、またはリアルタイム制御データなど、時間の経過に対応して順次送信または受信が要求されるデータであればよい。
【００４８】
サーバ１２は、カメラ１１から供給された画像データをパケットに格納して、パケットを通信網１３を介して、クライアント１４に送信する。
【００４９】
通信網１３は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、所定の遅延時間で、サーバ１２から送信されたパケットをクライアント１４まで伝送する。
【００５０】
クライアント１４は、通信網１３を介してサーバ１２から送信されてきたパケットを受信して、受信したパケットに格納されている画像データを抽出する。
【００５１】
クライアント１４は、ストリーミングデータが格納されているパケットを正常に受信できなかった場合、サーバ１２に再送を要求する。サーバ１２は、クライアント１４から再送が要求された場合、通信網１３の状態などに応じて、ストリーミングデータが格納されているパケットを再送する。
【００５２】
図２は、サーバ１２の構成の例を示すブロック図である。CPU（Central Processing Unit）３１は、ROM（Read Only Memory）３２、または記録部３８に記録されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）３３には、CPU３１が実行するプログラムやデータなどが適宜記憶される。これらのCPU３１、ROM３２、およびRAM３３は、バス３４により相互に接続されている。
【００５３】
CPU３１にはまた、バス３４を介して入出力インタフェース３５が接続されている。入出力インタフェース３５には、キーボード、マウス、スイッチなどよりなる入力部３６、ディスプレイ、スピーカ、ランプなどよりなる出力部３７が接続されている。CPU３１は、入力部３６から入力される指令に対応して各種の処理を実行する。
【００５４】
入出力インタフェース３５に接続されている記録部３８は、例えばハードディスクなどで構成され、CPU３１が実行するプログラムや各種のデータを記録する。通信部３９は、インターネット、その他のネットワークなどの通信網１３を介して、クライアント１４などの外部の装置と通信する。
【００５５】
また、通信部３９を介してプログラムを取得し、記録部３８に記録してもよい。
【００５６】
入出力インタフェース３５に接続されているドライブ４０は、磁気ディスク５１、光ディスク５２、光磁気ディスク５３、或いは半導体メモリ５４などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部３８に転送され、記録される。
【００５７】
なお、クライアント１４は、サーバ１２と同様に構成されるので、その説明は省略する。
【００５８】
図３は、サーバ１２の機能の構成を示すブロック図である。
【００５９】
サーバ１２は、エンコーダ７１、パケタイザ７２、再送用バッファ７３、RTT（Round-Trip Time（往復伝搬遅延時間））計測部７４、NACK（Negative Acknowledgment）処理部７５、レート制御部７６、RTCP（RTP Control Protocol）解析部７７、およびモードスイッチ設定部７８を含む。
【００６０】
エンコーダ７１は、レート制御部７６の制御に基づき、所定のビットレートで、供給されたストリーミングデータの一例である画像データを符号化し、符号化された画像データをパケタイザ７２に供給する。パケタイザ７２は、エンコーダ７１から供給された、符号化されている画像データを所定の方式のパケットに格納して、パケットを通信部３９および再送用バッファ７３に供給する。
【００６１】
再送用バッファ７３は、パケタイザ７２から供給されたパケットを再送パケットとして一時的に記憶し、NACK処理部７５の制御に基づいて、記憶している再送パケットを通信部３９に供給する。
【００６２】
通信部３９は、パケタイザ７２から供給されたパケットを送信パケットとして、通信網１３を介して、相手であるクライアント１４に送信する。通信部３９は、再送用バッファ７３から供給された再送パケットを、通信網１３を介して、相手に送信する。
【００６３】
RTT計測部７４は、RTT計測パケットを通信部３９に供給する。RTT計測パケットの詳細は後述する。RTT計測部７４は、通信部３９が受信し、通信部３９から供給されたRTT計測パケットを基に、通信網１３の往復伝搬遅延時間を算出する。RTT計測部７４は、算出した往復伝搬遅延時間をレート制御部７６およびモードスイッチ設定部７８に供給する。
【００６４】
NACK処理部７５は、モードスイッチ設定部７８のモードスイッチの設定、および通信部３９が受信し、通信部３９から供給された再送要求パケットを基に、再送用バッファ７３に格納されている再送パケットの相手への送信を制御する。再送要求パケットの詳細は後述する。
【００６５】
レート制御部７６は、RTT計測部７４から供給された往復伝搬遅延時間を基に、エンコーダ７１の符号化のビットレートを制御する。すなわち、レート制御部７６は、エンコーダ７１の符号化のビットレートを制御することにより、通信部３９における送信パケットの送信レートを制御する。例えば、レート制御部７６は、送信レートを増加させるか、減少させるか、または維持させるようにエンコーダ７１に符号化を指示する。
【００６６】
または、レート制御部７６は、RTCP解析部７７から供給されたパケットロス率を基に、エンコーダ７１の符号化のビットレートを制御する。
【００６７】
RTCP解析部７７は、通信部３９が受信し、通信部３９から供給されたレシーバレポートパケットから、クライアント１４が受信した送信パケットのパケットロス率を抽出することにより、通信網１３のパケットのロス率を取得して、取得したロス率をモードスイッチ設定部７８およびレート制御部７６に供給する。
【００６８】
モードスイッチ設定部７８は、使用者の操作に対応した入力部３６からの信号、RTT計測部７４から供給された往復伝搬遅延時間、またはRTCP解析部７７から供給されたロス率を基に、モードスイッチをオンまたはオフに設定する。モードスイッチは、送信レートが維持されている場合に、再送パケットの再送を許可するか否か、すなわち、いわゆるARQの処理を実行するか否かを示す。
【００６９】
図４は、クライアント１４の機能の構成を示すブロック図である。
【００７０】
クライアント１４は、通信部９１、RTP処理部９２、バッファ９３、デコーダ９４、NACK処理部９５、およびRTT処理部９６を含む。
【００７１】
通信部９１は、クライアント１４の図２における通信部３９に相当し、通信網１３を介してサーバ１２から送信されてきた各種のパケットを受信する。通信部９１は、受信したパケットをRTP処理部９２またはRTT処理部９６に供給する。
【００７２】
RTP処理部９２は、通信部９１が受信し、通信部９１から供給された送信パケットであるRTPパケットから画像データを抽出して、抽出した画像データをバッファ９３に供給する。RTP処理部９２は、正常に送信パケットを受信できなかった場合、例えば、パケットロスが発生した場合、パケットロスが発生した送信パケットを示す情報をNACK処理部９５に供給する。
【００７３】
バッファ９３は、RTP処理部９２から供給された画像データを一時的に記憶する。
【００７４】
デコーダ９４は、エンコーダ７１に対応する復号方式で、バッファ９３に記憶されている画像データを復号して、復号された画像データを出力する。
【００７５】
NACK処理部９５は、RTP処理部９２から供給されたパケットロスが発生した送信パケットを示す情報を基に、パケットロスが発生した送信パケットの再送を要求する再送要求パケットを生成して、通信部９１に供給する。再送要求パケットは、例えば、後述するNACKパケットである。NACKパケットの詳細は、後述する。
【００７６】
通信部９１は、NACK処理部９５から供給された再送要求パケットを通信網１３を介して相手であるサーバ１２に送信する。
【００７７】
RTT処理部９６は、通信部９１が受信し、通信部９１から供給されたRTT計測パケットを取得する。RTT処理部９６は、取得したRTT計測パケットのデータ部と同じデータ部を含むRTT計測パケットを生成して、生成したRTT計測パケットを通信部９１に供給する。通信部９１は、RTT処理部９６から供給されたRTT計測パケットを通信網１３を介して相手であるサーバ１２に送信する。RTT計測パケットの詳細は、後述する。
【００７８】
なお、図３または図４で示されるサーバ１２またはクライアント１４の機能は、ハードウェアにより実現するようにしてもよく、ソフトウェア（プログラム）により実現するようにしてもよい。
【００７９】
次に、図５のフローチャートを参照して、送信プログラムを実行するサーバ１２による、送信の処理を説明する。ステップＳ１１において、サーバ１２は、送信の処理に必要なデータを初期化する。例えば、ステップＳ１１において、サーバ１２のエンコーダ７１は、内蔵しているタイマおよび送信レートを初期値に設定する。より具体的には、例えば、エンコーダ７１は、タイマの値を０に設定して、送信レートを1Mbpsに設定する。
【００８０】
ステップＳ１２において、エンコーダ７１は、タイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していない場合、ステップＳ１２に戻り、タイマが終了するまで、判定の処理を繰り返す。
【００８１】
例えば、ステップＳ１２において、エンコーダ７１は、タイマの値と、33msとを比較することにより、タイマが終了したか否かを判定する。この場合における、タイマの値と比較される33msは、フレームの数が１秒当たり３０である場合の例であり、本発明を限定するものではない。
【００８２】
なお、初期化の処理において、タイマの値を33msなどの所定の値に設定して、時間の経過に対応してタイマの値が減少するようにして、比較の処理において、タイマの値が０であるか否かを判定するようにしてもよい。以下に説明するタイマに関する処理において、同様である。
【００８３】
ステップＳ１２において、タイマが終了したと判定された場合、ステップＳ１３に進み、カメラ１１から供給された画像データをキャプチャする。ステップＳ１３において、例えば、エンコーダ７１は、カメラ１１から供給された画像データのうち、１フレーム分をキャプチャする。
【００８４】
ステップＳ１４において、エンコーダ７１は、キャプチャされた画像データを、エンコード（符号化）する。例えば、ステップＳ１４において、エンコーダ７１は、キャプチャされた画像データを、設定された送信レートとなるように、JPEG（Joint Photographic Experts Group）、JPEG2000、またはモーションJPEGなどの方式により符号化する。
【００８５】
例えば、ステップＳ１４において、エンコーダ７１は、レート制御部７６の指示に基づいて、画像データが格納される送信パケットが所定の送信レートとなるように、所定のレートで画像データを符号化する。
【００８６】
ステップＳ１５において、パケタイザ７２は、符号化された画像データを格納するRTP（Real-time Transport Protocol）パケットを生成する。RTPパケットは、送信パケットの一例である。
【００８７】
図６は、RTPパケットを説明する図である。RTPパケットの先頭には、図６において”v”で表される、２ビットのバージョン情報が配置される。バージョン情報は、RTPパケットのバージョンを示す。
【００８８】
バージョン情報の次に１ビットのパディングが配置され、パディングに続いて、１ビットの拡張情報がRTPパケットに配置される。拡張情報は、図６において、”x”で表される。拡張情報は、RTPパケットに拡張ヘッダを配置する場合に、所定の値に設定される。
【００８９】
拡張情報に続いて、CSRC（Contributing Source）カウントがRTPパケットに配置される。CSRCカウントは、図６中において、”cc”で表される。CSRCカウントは、CSRC識別子の数を表す。
【００９０】
CSRCカウントに続いて配置される、１ビットのメーカー情報は、プロファイルによって定義される。メーカー情報は、図６中において、”m”で表される。
【００９１】
メーカー情報に続いて配置される、７ビットのペイロードタイプは、RTPパケットのフォーマットを定義するための情報である。ペイロードタイプは、図６中において、”Pt”で表される。RTPパケットにおいて、ペイロードタイプは、３３とされる。
【００９２】
シーケンス番号は、ペイロードタイプの次に配置される、１６ビットの情報である。シーケンス番号は、RTPパケットの送信の度に、１ずつ増える。シーケンス番号は、パケットロスを検出し、RTPパケットの順序を修復するために使用される。
【００９３】
シーケンス番号の次に配置される、３２ビットのタイムスタンプは、そのRTPパケットに格納されているストリーミングデータの最初のオクテットがサンプルされた時刻を示す情報である。
【００９４】
SSRC（Synchronization source）識別子は、タイムスタンプの次に配置される、３２ビットの情報であって、RTPパケットに格納されるストリーミングデータのソースを示す。
【００９５】
RTPパケットにおいて、SSRC識別子の次には、ストリーミングデータが格納される。図６において、”Original Data”は、ストリーミングデータを示す。
【００９６】
図５に戻り、ステップＳ１６において、パケタイザ７２は、RTPパケットを再送用バッファ７３に供給して、再送用バッファ７３にRTPパケットを再送パケットとして格納させる。
【００９７】
なお、送信パケットと再送パケットとは、例えば、RTPパケットである、同じパケットであるが、説明のために、送信パケットと再送パケットとを区別する。
【００９８】
ステップＳ１７において、パケタイザ７２は、生成したRTPパケットを通信部３９に供給して、通信部３９は、パケタイザ７２から供給されたRTPパケットを送信する。
【００９９】
ステップＳ１８において、パケタイザ７２は、RTPパケットに付加するRTPタイムスタンプを更新する。ステップＳ１９において、エンコーダ７１は、内蔵しているタイマをセットして、ステップＳ１２に戻り、上述した処理を繰り返す。
【０１００】
例えば、ステップＳ１９において、エンコーダ７１は、タイマの値を０をセットする。
【０１０１】
このように、サーバ１２は、通信網１３を介して、例えば、画像であるストリーミングデータが格納されているRTPパケットをクライアント１４に送信する。
【０１０２】
次に、図７のフローチャートを参照して、送信プログラムを実行するサーバ１２による、送信レートの更新の処理を説明する。ステップＳ３１において、RTT計測部７４は、タイマを初期化する。例えば、ステップＳ３１において、RTT計測部７４は、タイマの値を０に設定することにより初期化する。
【０１０３】
ステップＳ３２において、NACK処理部７５は、通信部３９が受信し、通信部３９から供給されたパケットを基に、NACKパケットを受信したか否かを判定する。ステップＳ３２において、NACKパケットを受信したと判定された場合、ステップＳ３３に進み、NACK処理部７５、再送用バッファ７３、および通信部３９は、再送の処理を実行して、手続きは、ステップＳ３２に戻り、送信レートの更新の処理を繰り返す。再送の処理の詳細は、後述する。
【０１０４】
図８は、NACKパケットを説明する図である。バージョン情報、パディング、およびSSRC識別子は、図６で示されるRTPパケットの場合と同様であるので、その説明は省略する。
【０１０５】
NACKパケットにおいて、ペイロードタイプは、２０４とされる。ペイロードタイプの次に配置される、１６ビットのメッセージ長は、NACKパケットの長さ（サイズ）を示す情報である。
【０１０６】
NACKパケットにおいて、３２ビットのSSRC識別子に続いて、３２ビットの名前が配置される。名前は、例えば、NACKパケットを取り扱うアプリケーションプログラムの名前である。
【０１０７】
名前に続いて配置される３２ビットの要求シーケンス番号は、パケットロスが発生したRTPパケット、すなわち、クライアント１４によって再送が要求されるパケットを特定するシーケンス番号を示す。
【０１０８】
ステップＳ３２において、NACKパケットを受信していないと判定された場合、ステップＳ３４に進み、RTT計測部７４は、通信部３９が受信し、通信部３９から供給されたパケットを基に、RTT計測パケットを受信したか否かを判定する。ステップＳ３４において、RTT計測パケットを受信したと判定された場合、ステップＳ３５に進み、RTT計測部７４は、往復伝搬遅延時間を計算する。
【０１０９】
ステップＳ３６において、RTT計測部７４は、ステップＳ３５の処理で計算された往復伝搬遅延時間を記憶する。なお、ステップＳ３６において、RTT計測部７４は、前回の往復伝搬遅延時間とは別に、今回の往復伝搬遅延時間を記憶する。
【０１１０】
図９は、RTT計測パケットを説明する図である。バージョン情報、パディング、およびSSRC識別子、および名前は、図８で示されるNACKパケットの場合と同様であるので、その説明は省略する。
【０１１１】
RTT計測パケットにおいて、ペイロードタイプは、２０５とされる。
【０１１２】
RTT計測パケットにおいて名前の次に格納される送信時刻は、サーバ１２がクライアント１４に、そのRTT計測パケットを送信した時刻を示す。
【０１１３】
また、クライアント１４は、RTT計測パケットの送信時刻をそのままにして、サーバ１２にそのRTT計測パケットを即座に返送するので、サーバ１２が受信したRTT計測パケットに格納される送信時刻は、クライアント１４がサーバ１２に送信してきたRTT計測パケットに対応するRTT計測パケットをサーバ１２がクライアント１４に送信した時刻を示す。
【０１１４】
従って、サーバ１２は、RTT計測パケットの送信時刻を現在時刻から引き算することにより、往復伝搬遅延時間を計算することができる。
【０１１５】
すなわち、例えば、ステップＳ３５において、RTT計測部７４は、図示せぬリアルタイムクロックによって示されるRTT計測パケットを受信した時刻から、RTT計測パケットに格納されている送信時刻を引き算することにより、往復伝搬遅延時間を計算する。
【０１１６】
ステップＳ３７において、RTT計測部７４は、ステップＳ３６の処理により今回の往復伝搬遅延時間と前回の往復伝搬遅延時間とを記憶しているので、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を１．１倍した値より大きいか否かを判定する。ステップＳ３７において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を１．１倍した値より大きいと判定された場合、往復伝搬遅延時間が増加しているので、ステップＳ３８に進み、RTT計測部７４は、遅延時間状態を増加状態として、遅延時間状態が増加状態であることを示す信号をレート制御部７６に供給する。
【０１１７】
ステップＳ３９において、レート制御部７６は、送信レート状態の遷移の処理を実行する。送信レート状態の遷移の処理の詳細は、後述する。
【０１１８】
ステップＳ４０において、レート制御部７６は、ステップＳ３９の処理で決定された送信レート状態を基に、送信レートを更新して、ステップＳ３２に戻り、送信レートの更新の処理を繰り返す。例えば、ステップＳ４０において、レート制御部７６は、ステップＳ３９の処理で決定された送信レート状態を基に、エンコーダ７１の符号化のビットレートを制御することにより、通信部３９における送信パケットの送信レートを更新する。
【０１１９】
より詳細には、例えば、ステップＳ４０において、レート制御部７６は、送信レート状態がレート維持状態である場合、エンコーダ７１の符号化のビットレートを、変更させずに、一定状態とするように制御することにより、通信部３９における送信パケットの送信レートを変更させずに、一定状態とする。例えば、ステップＳ４０において、レート制御部７６は、送信レート状態がレート増加状態である場合、エンコーダ７１の符号化のビットレートを、現在の１．１倍とするように制御することにより、通信部３９における送信パケットの送信レートを１．１倍に増加させる。また、例えば、ステップＳ４０において、レート制御部７６は、送信レート状態がレート減少状態である場合、エンコーダ７１の符号化のビットレートを、現在の０．９倍とするように制御することにより、通信部３９における送信パケットの送信レートを０．９倍に減少させる。
【０１２０】
なお、通信部３９における送信パケットの送信レートに、上限および下限を設けるようにしてもよい。また、エンコーダ７１における符号化のビットレートに、上限および下限を設けるようにしてもよい。
【０１２１】
ステップＳ３７において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を１．１倍した値より大きくないと判定された場合、ステップＳ４１に進み、RTT計測部７４は、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を０．９倍した値より小さいか否かを判定する。ステップＳ４１において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を０．９倍した値より小さいと判定された場合、往復伝搬遅延時間が減少しているので、ステップＳ４２に進み、RTT計測部７４は、遅延時間状態を減少状態として、遅延時間状態が減少状態であることを示す信号をレート制御部７６に供給する。ステップＳ４２の処理の後、手続きは、ステップＳ３９に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップＳ３２に戻り、送信レートの更新の処理を繰り返す。
【０１２２】
ステップＳ４１において、今回の往復伝搬遅延時間が、前回の往復伝搬遅延時間を０．９倍した値より小さくないと判定された場合、往復伝搬遅延時間がほぼ一定しているので、ステップＳ４３に進み、RTT計測部７４は、遅延時間状態を一定状態として、遅延時間状態が一定状態であることを示す信号をレート制御部７６に供給する。ステップＳ４３の処理の後、手続きは、ステップＳ３９に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップＳ３２に戻り、送信レートの更新の処理を繰り返す。
【０１２３】
一方、ステップＳ３４において、RTT計測パケットを受信していないと判定された場合、新たに往復伝搬遅延時間を計算することはできないので、ステップＳ４４に進み、RTT計測部７４は、タイマが終了したか否かを判定する。例えば、ステップＳ３４において、RTT計測部７４は、タイマの値と、予め定めたRTT計測パケットを送信する間隔とを比較することにより、タイマが終了したか否かを判定する。
【０１２４】
ステップＳ４４において、タイマが終了したと判定された場合、ステップＳ４５に進み、RTT計測部７４は、RTT計測パケットを生成して、生成されたRTT計測パケットを通信部３９に供給して、通信部３９に通信網１３を介してRTT計測パケットをクライアント１４宛に送信させる。
【０１２５】
ステップＳ４６において、RTT計測部７４は、タイマをセットして、ステップＳ３２に戻り、送信レートの更新の処理を繰り返す。例えば、ステップＳ４６において、RTT計測部７４は、タイマの値を０に設定する。
【０１２６】
ステップＳ４４において、タイマが終了していないと判定された場合、RTT計測パケットを送信する必要はないので、ステップＳ３２に戻り、送信レートの更新の処理を繰り返す。
【０１２７】
このように、サーバ１２は、RTT計測パケットを受信した場合、通信網１３の往復伝搬遅延時間に基づいて、送信レートを更新する。
【０１２８】
次に、図１０のフローチャートを参照して、図７のステップＳ３９の処理に対応する送信レート状態の遷移の処理の詳細を説明する。ステップＳ６１において、レート制御部７６は、自分が記憶している送信レート状態を基に、送信レート状態がレート維持状態であるか否かを判定し、送信レート状態がレート維持状態であると判定された場合、ステップＳ６２に進み、RTT計測部７４から供給された信号を基に、遅延時間状態が増加状態であるか否かを判定する。
【０１２９】
ステップＳ６２において、遅延時間状態が増加状態であると判定された場合、ステップＳ６３に進み、レート制御部７６は、自分が記憶している、レート維持状態である送信レート状態をレート減少状態に遷移させて、処理は終了する。
【０１３０】
ステップＳ６２において、遅延時間状態が増加状態でないと判定された場合、ステップＳ６４に進み、レート制御部７６は、RTT計測部７４から供給された信号を基に、遅延時間状態が減少状態であるか否かを判定する。
【０１３１】
ステップＳ６４において、遅延時間状態が減少状態であると判定された場合、ステップＳ６５に進み、レート制御部７６は、自分が記憶している、レート維持状態である送信レート状態をレート増加状態に遷移させて、処理は終了する。
【０１３２】
ステップＳ６４において、遅延時間状態が減少状態でないと判定された場合、遅延時間状態は一定状態なので、ステップＳ６６に進み、レート制御部７６は、自分が記憶している、レート維持状態である送信レート状態を維持して（状態を遷移させないで）、処理は終了する。
【０１３３】
ステップＳ６１において、送信レート状態がレート維持状態でないと判定された場合、ステップＳ６７に進み、レート制御部７６は、自分が記憶している送信レート状態を基に、送信レート状態がレート増加状態であるか否かを判定する。
【０１３４】
ステップＳ６７において、送信レート状態がレート増加状態であると判定された場合、ステップＳ６８に進み、レート制御部７６は、RTT計測部７４から供給された信号を基に、遅延時間状態が増加状態であるか否かを判定する。
【０１３５】
ステップＳ６８において、遅延時間状態が増加状態であると判定された場合、ステップＳ６９に進み、レート制御部７６は、自分が記憶している、レート増加状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
【０１３６】
ステップＳ６８において、遅延時間状態が増加状態でないと判定された場合、遅延時間状態は減少状態であるか、または一定状態なので、ステップＳ７０に進み、レート制御部７６は、自分が記憶している、レート増加状態である送信レート状態を維持して（状態を遷移させないで）、処理は終了する。
【０１３７】
ステップＳ６７において、送信レート状態がレート増加状態でないと判定された場合、送信レート状態はレート減少状態なので、ステップＳ７１に進み、レート制御部７６は、RTT計測部７４から供給された信号を基に、遅延時間状態が減少状態であるか否かを判定する。
【０１３８】
ステップＳ７１において、遅延時間状態が減少状態であると判定された場合、ステップＳ７２に進み、レート制御部７６は、自分が記憶している、レート減少状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
【０１３９】
ステップＳ７１において、遅延時間状態が減少状態でないと判定された場合、遅延時間状態は増加状態であるか、または一定状態なので、ステップＳ７３に進み、レート制御部７６は、自分が記憶している、レート減少状態である送信レート状態を維持して（状態を遷移させないで）、処理は終了する。
【０１４０】
このように、レート制御部７６は、遅延時間状態に基づいて、送信レート状態を遷移させるか、維持させる。
【０１４１】
図１１は、送信レート状態の状態遷移図である。図１１のＳは、レート維持状態を示し、Ｕは、レート増加状態を示し、Ｄは、レート減少状態を示す。
【０１４２】
なお、レート維持状態は、処理を開始する場合の初期状態でもある。
【０１４３】
送信レート状態がレート維持状態である場合、遅延時間状態が増加状態であるとき、送信レート状態は、レート減少状態に遷移する。送信レート状態がレート維持状態である場合、遅延時間状態が減少状態であるとき、送信レート状態は、レート増加状態に遷移する。送信レート状態がレート維持状態である場合、遅延時間状態が一定状態であるとき、送信レート状態は、遷移しないで、レート維持状態に維持される。
【０１４４】
送信レート状態がレート増加状態である場合、遅延時間状態が増加状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート増加状態である場合、遅延時間状態が一定状態または減少状態であるとき、送信レート状態は、遷移しないで、レート増加状態に維持される。
【０１４５】
送信レート状態がレート減少状態である場合、遅延時間状態が減少状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート減少状態である場合、遅延時間状態が一定状態または増加状態であるとき、送信レート状態は、遷移しないで、レート減少状態に維持される。
【０１４６】
次に、図１２のフローチャートを参照して、図７のステップＳ３３の処理に対応する再送の処理の詳細を説明する。ステップＳ９１において、NACK処理部７５は、レート制御部７６から供給される信号を基に、送信レート状態がレート増加状態であるか否かを判定し、送信レート状態がレート増加状態であると判定された場合、通信網１３に再送パケットをさらに伝送できる余裕があるので、ステップＳ９２に進み、要求されたシーケンス番号のRTPパケットを再送して、処理は終了する。すなわち、例えば、ステップＳ９２において、NACK処理部７５は、再送用バッファ７３に、受信したNACKパケットの要求シーケンス番号によって特定される、再送パケットであるRTPパケットを通信部３９に供給させる。そして、通信部３９は、再送用バッファ７３から供給された再送パケットであるRTPパケットを通信網１３を介してクライアント１４に送信する。
【０１４７】
ステップＳ９１において、送信レート状態がレート増加状態でないと判定された場合、ステップＳ９３に進み、NACK処理部７５は、レート制御部７６から供給される信号を基に、送信レート状態がレート減少状態であるか否かを判定する。ステップＳ９３において、送信レート状態がレート減少状態であると判定された場合、通信網１３に再送パケットをさらに伝送できる余裕がないので、再送パケットを再送しないで、処理は終了する。
【０１４８】
ステップＳ９３において、送信レート状態がレート減少状態でないと判定された場合、送信レート状態がレート維持状態なので、ステップＳ９４に進み、NACK処理部７５は、モードスイッチ設定部７８により設定されたモードスイッチがオンであるか否かを判定する。
【０１４９】
なお、モードスイッチのオンまたはオフは、再送パケットの再送を制御するモードの一例である。
【０１５０】
ステップＳ９４において、モードスイッチがオンであると判定された場合、レート維持状態における再送パケットの再送が指示されているので、ステップＳ９５に進み、NACK処理部７５は、ステップＳ９２の処理と同様の処理で、要求されたシーケンス番号のRTPパケットを再送して、処理は終了する。
【０１５１】
ステップＳ９４において、モードスイッチがオンでないと判定された場合、モードスイッチがオフであり、レート維持状態における再送パケットの再送が禁止されているので、再送パケットを再送しないで、処理は終了する。
【０１５２】
このように、サーバ１２は、通信網１３の伝送状態に応じて、送信レートを制御すると共に、送信レートの制御の状態に対応して、再送パケットを再送するかまたは再送を禁止する。例えば、サーバ１２は、クライアント１４から、正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、レート制御部７６が送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、レート制御部７６が送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御する。
【０１５３】
すなわち、再送パケットは、通信網１３に再送パケットをさらに伝送できる余裕がある場合、再送され、通信網１３に再送パケットをさらに伝送できる余裕がない場合、再送されない。これにより、通信網１３に再送パケットをさらに伝送できる余裕がない場合、再送パケットの再送を禁止するので、通信網１３への負荷、すなわち、送信レートが適正に制御することができる。
【０１５４】
同時に、通信網１３に再送パケットをさらに伝送できる余裕がある場合、再送パケットが送信されるので、クライアント１４に、より確実に到達するように再送パケットを送信することができる。
【０１５５】
次に、RTT計測パケットまたはレシーバレポートパケットを受信した場合に実行される、モードスイッチの設定の処理を説明する。
【０１５６】
図１３は、モードスイッチの設定の処理を説明するフローチャートである。
【０１５７】
ステップＳ１２１において、モードスイッチ設定部７８は、使用者の操作に対応した入力部３６からの信号を取得して、取得された信号の値から、使用者からモードスイッチのオンが指示されたか否かを判定する。ステップＳ１２１において、モードスイッチのオンが指示されたと判定された場合、ステップＳ１２２に進み、モードスイッチ設定部７８は、モードスイッチをオンに設定して、モードスイッチがオンであることを示す信号をNACK処理部７５に供給して、ステップＳ１２１に戻り、モードスイッチの設定の処理を繰り返す。
【０１５８】
ステップＳ１２１において、モードスイッチのオンが指示されていないと判定された場合、ステップＳ１２３に進み、モードスイッチ設定部７８は、使用者の操作に対応した入力部３６からの信号を取得して、取得された信号の値から、使用者からモードスイッチのオフが指示されたか否かを判定する。
【０１５９】
ステップＳ１２３において、モードスイッチのオフが指示されたと判定された場合、ステップＳ１２４に進み、モードスイッチ設定部７８は、モードスイッチをオフに設定して、モードスイッチがオフであることを示す信号をNACK処理部７５に供給して、ステップＳ１２１に戻り、モードスイッチの設定の処理を繰り返す。
【０１６０】
ステップＳ１２３において、モードスイッチのオフが指示されていないと判定された場合、使用者からの指示がないので、ステップＳ１２５に進み、モードスイッチ設定部７８は、RTT計測部７４から供給された往復伝搬遅延時間を示す信号を基に、往復伝搬遅延時間が予め定めた閾値以下であるか否かを判定する。ステップＳ１２５において、往復伝搬遅延時間が予め定めた閾値以下であると判定された場合、ステップＳ１２６に進み、モードスイッチ設定部７８は、RTCP解析部７７から供給された、クライアント１４における送信パケットであるRTPパケットのロス率を示す情報を基に、ロス率が予め定めた閾値以下であるか否かを判定する。
【０１６１】
例えば、ステップＳ１２５の処理において、往復伝搬遅延時間と比較される閾値は、100msとすることができる。例えば、ステップＳ１２６の処理において、ロス率と比較される閾値は、5%とすることができる。
【０１６２】
ステップＳ１２６において、ロス率が予め定めた閾値以下であると判定された場合、ステップＳ１２２に進み、モードスイッチ設定部７８は、モードスイッチをオンに設定して、モードスイッチがオンであることを示す信号をNACK処理部７５に供給して、ステップＳ１２１に戻り、モードスイッチの設定の処理を繰り返す。
【０１６３】
ステップＳ１２５において、往復伝搬遅延時間が予め定めた閾値以下でないと判定された場合、またはステップＳ１２６において、ロス率が予め定めた閾値以下でないと判定された場合、ステップＳ１２４に進み、モードスイッチ設定部７８は、モードスイッチをオフに設定して、モードスイッチがオフであることを示す信号をNACK処理部７５に供給して、ステップＳ１２１に戻り、モードスイッチの設定の処理を繰り返す。
【０１６４】
なお、往復伝搬遅延時間またはロス率のいずれか一方が予め定めた閾値以下である場合に、モードスイッチをオンに設定するようにしてもよい。
【０１６５】
このように、モードスイッチ設定部７８は、使用者の指示に基づいて、モードスイッチを設定するか、または通信網１３の伝送状態を基に、モードスイッチを設定する。このようにすることで、レート維持状態において、使用者の要求に応じて、サーバ１２は、クライアント１４に再送パケットを送信することができる。
【０１６６】
また、通信網１３の伝送状態を基に、モードスイッチを設定するようにした場合、レート維持状態において、サーバ１２は、送信パケットの伝送への影響をより少なくして、ライアント１４に再送パケットを送信することができる。
【０１６７】
次に、図１４のフローチャートを参照して、通信プログラムを実行するクライアント１４のデコードの処理を説明する。ステップＳ１５１において、デコーダ９４は、デコードの処理に必要なデータを初期化する。例えば、ステップＳ１５１において、デコーダ９４は、500msの期間、待ち状態となって待機して、バッファ９３が、所定の量の画像データを記憶するまで待つ。また、例えば、画像データが１秒当たり３０フレームからなる場合、ステップＳ１５１において、デコーダ９４は、内蔵しているタイマの値を33msに設定する。
【０１６８】
ステップＳ１５２において、デコーダ９４は、タイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していない場合、ステップＳ１５２に戻り、タイマが終了するまで、判定の処理を繰り返す。
【０１６９】
例えば、ステップＳ１５２において、時間の経過に対応して減算されるタイマの値が、０になったか否かを基に、デコーダ９４は、タイマが終了したか否かを判定する。
【０１７０】
ステップＳ１５２において、タイマが終了したと判定された場合、ステップＳ１５３に進み、デコーダ９４は、バッファ９３から１フレーム分のデータを取得する。ステップＳ１５４において、デコーダ９４は、ステップＳ１５３の処理で取得したデータをデコードして、デコードにより得られた画像データを出力する。
【０１７１】
ステップＳ１５５において、デコーダ９４は、内蔵しているタイマをセットして、ステップＳ１５１に戻り、上述した処理を繰り返す。例えば、ステップＳ１９において、デコーダ９４は、内蔵しているタイマの値を33msに設定する。
【０１７２】
ステップＳ１５２において、タイマが終了していないと判定された場合、ステップＳ１５６に進み、通信部９１は、パケットを受信し、受信したパケットをRTP処理部９２に供給する。ステップＳ１５７において、RTP処理部９２は、RTPパケットを受信したか否かを判定し、RTPパケットを受信したと判定された場合、ステップＳ１５８に進み、受信したRTPパケットを基に、RTPパケットを正常に受信できなかったか否か、すなわち、パケットロスが発生したか否かを判定する。
【０１７３】
ステップＳ１５８において、パケットロスが発生したと判定された場合、ステップＳ１５９において、RTP処理部９２は、パケットロスが発生したことを示す信号をNACK処理部９５に供給して、NACK処理部９５は、NACKパケットを生成して、生成したNACKパケットを通信部９１に供給する。そして、NACK処理部９５は、通信部９１に、通信網１３を介して、ロスパケットに対応するNACKパケットをサーバ１２宛てに送信させて、ステップＳ１５１に戻り、上述した処理を繰り返す。
【０１７４】
ステップＳ１５７において、RTPパケットを受信していないと判定された場合、または、ステップＳ１５８において、パケットロスが発生していないと判定された場合、再送を要求する必要がないので、ステップＳ１５９の処理をスキップして、NACKパケットを送信することなく、ステップＳ１５１に戻り、上述した処理を繰り返す。
【０１７５】
このように、クライアント１４は、パケットロスが発生した場合、再送を要求するNACKパケットをサーバ１２に送信する。
【０１７６】
次に、図１５のフローチャートを参照して、RTT計測パケットの返信の処理を説明する。ステップＳ１８１において、RTT処理部９６は、通信部９１がパケットを受信した場合に、通信部９１から供給されたパケットを基に、RTT計測パケットを受信したか否かを判定し、RTT計測パケットを受信していないと判定された場合、ステップＳ１８１に戻り、RTT計測パケットが受信されるまで、判定の処理を繰り返す。
【０１７７】
ステップＳ１８１において、RTT計測パケットを受信したと判定された場合、ステップＳ１８２に進み、RTT処理部９６は、直ちに、受信したRTT計測パケットのデータ部（図９のヘッダを除いた部分）と同様のデータ部のRTT計測パケットを生成して、生成したRTT計測パケットを通信部９１に供給する。そして、RTT処理部９６は、通信部９１に、通信網１３を介して、RTT計測パケットをサーバ１２宛てに直ちに送信させて、ステップＳ１８１に戻り、上述した処理を繰り返す。
【０１７８】
このように、クライアント１４は、RTT計測パケットを受信すると、直ちに、サーバ１２にRTT計測パケットを返送する。
【０１７９】
図１６は、以上で説明した、本発明に係る通信システムによる、再送パケットの再送の処理を説明する図である。
【０１８０】
図１６Ａで示されるように、サーバ１２がクライアント１４に、通信網１３を介して、RTT計測パケットを送信して、クライアント１４が、RTT計測パケットを受信した場合、通信網１３を介して、受信したRTT計測パケットに対応するRTT計測パケットを直ちに返送する。
【０１８１】
上述したようにRTT計測パケットには、サーバ１２がクライアント１４に送信した時刻が格納されているので、サーバ１２は、クライアント１４から返送されたRTT計測パケットを受信した場合、現在時刻から、RTT計測パケットに格納されている時刻を引き算することにより、往復伝搬遅延時間を算出する。
【０１８２】
図１６Ｂは、送信レート状態の遷移およびモードスイッチの設定の例を示す図である。図１６Ｃは、サーバ１２とクライアント１４との送信パケット、NACKパケット、および再送パケットの送信の例を示す図である。
【０１８３】
図１６Ｂで示されるように、例えば、送信レート状態がレート減少状態である場合、図１６Ｃで示されるように、クライアント１４が、サーバ１２から送信されてきた送信パケット１０１−１を正常に受信できず、送信パケット１０１−２を正常に受信できたとき、クライアント１４は、送信パケット１０１−１に対応する再送パケットを要求するNACKパケットをサーバ１２に送信するが、サーバ１２は、要求された再送パケットを再送しない。
【０１８４】
例えば、送信レート状態がレート減少状態（図１６Ｂ中のＤで示される状態）である場合、往復伝搬遅延時間が１．０から０．８に変化したとき、送信レート状態は、レート維持状態（図１６Ｂ中のＳで示される状態）に遷移する。
【０１８５】
レート維持状態において、モードスイッチがオフである場合、クライアント１４が、サーバ１２から送信されてきた送信パケット１０１−３を正常に受信できず、送信パケット１０１−４を正常に受信できたとき、送信パケット１０１−３に対応する再送パケットを要求するNACKパケットをサーバ１２に送信するが、サーバ１２は、要求された再送パケットを再送しない。
【０１８６】
例えば、送信レート状態がレート維持状態である場合、往復伝搬遅延時間が０．８から０．５に変化したとき、送信レート状態は、レート増加状態（図１６Ｂ中のＵで示される状態）に遷移する。
【０１８７】
クライアント１４が、サーバ１２から送信されてきた送信パケット１０１−５を正常に受信できず、送信パケット１０１−６を正常に受信できたとき、クライアント１４は、送信パケット１０１−５に対応する再送パケットを要求するNACKパケットをサーバ１２に送信する。レート増加状態において、NACKパケットを受信したサーバ１２は、送信パケット１０１−５に対応する再送パケット１０２−５をクライアント１４に再送する。
【０１８８】
例えば、送信レート状態がレート増加状態である場合、往復伝搬遅延時間が０．５から０．８に変化したとき、送信レート状態は、レート維持状態に遷移する。
【０１８９】
クライアント１４が、サーバ１２から送信されてきた送信パケット１０１−７を正常に受信できず、送信パケット１０１−８を正常に受信できたとき、クライアント１４は、送信パケット１０１−７に対応する再送パケットを要求するNACKパケットをサーバ１２に送信する。レート維持状態において、モードスイッチがオンである場合、NACKパケットを受信したサーバ１２は、送信パケット１０１−７に対応する再送パケット１０２−７をクライアント１４に再送する。
【０１９０】
サーバ１２は、往復伝搬遅延時間に限らず、通信網１３の他の伝送状態を基に、送信レートを更新することができる。例えば、サーバ１２は、パケットのロス率を基に、送信レートを更新することができる。
【０１９１】
次に、図１７のフローチャートを参照して、パケットのロス率を基にした、送信レートの更新の他の処理を説明する。ステップＳ２０１乃至ステップＳ２０３の処理は、図７におけるステップＳ３１乃至ステップＳ３３の処理と同様なので、その説明は省略する。
【０１９２】
ステップＳ２０４において、RTCP解析部７７は、通信部３９が受信し、通信部３９から供給されたパケットを基に、レシーバレポートパケットを受信したか否かを判定する。例えば、レシーバレポートパケットは、RFC1889に基づく方式を有する。ステップＳ２０４において、レシーバレポートを受信したと判定された場合、ステップＳ２０５に進み、RTCP解析部７７は、ロス率を抽出する。
【０１９３】
図１８は、レシーバレポートパケットを説明する図である。バージョン情報、パディング、およびメッセージ長は、図８示されるNACKパケットの場合と同様であるので、その説明は省略する。
【０１９４】
レシーバレポートパケットにおいて、ペイロードタイプは、２０１とされる。
【０１９５】
レシーバレポートパケットには、さらに、送信者の同期ソース識別子、パケットロス率、累積喪失パケット数、最大受信シーケンス番号、パケット間隔ジッタ、最新送信レポート時刻、および送信レポート経過時間が格納されている。
【０１９６】
送信者の同期ソース識別子は、例えば、クライアント１４を特定する識別子である。パケットロス率は、クライアント１４における、送信パケットであるRTPパケットのロス率を示す。
【０１９７】
最大受信シーケンス番号は、クライアント１４において受信されたRTPパケットに格納されているシーケンス番号のうち、最大のシーケンス番号を示す。パケット間隔ジッタは、クライアント１４において受信されたRTPパケットのジッタを示す。
【０１９８】
最新送信レポート時刻および送信レポート経過時間は、レシーバレポートパケットの送信に関する情報である。
【０１９９】
例えば、ステップＳ２０５において、RTCP解析部７７は、レシーバレポートパケットからパケットロス率を抽出する。
【０２００】
ステップＳ２０６において、RTCP解析部７７は、ロス率を記憶する。例えば、ステップＳ２０６において、RTCP解析部７７は、前回のロス率とは別に、今回のロス率を記憶する。
【０２０１】
ステップＳ２０７において、RTT計測部７４は、今回のロス率が、前回のロス率を１．１倍した値より大きいか否かを判定し、今回のロス率が、前回のロス率を１．１倍した値より大きいと判定された場合、ロス率が増加しているので、ステップＳ２０８に進み、ロス率状態を増加状態として、ロス率状態が増加状態であることを示す信号をレート制御部７６に供給する。
【０２０２】
ステップＳ２０９において、レート制御部７６は、送信レート状態の遷移の処理を実行する。送信レート状態の遷移の処理の詳細は、後述する。
【０２０３】
ステップＳ２１０において、レート制御部７６は、図７のステップＳ４０の処理と同様の処理で、ステップＳ２０９の処理で決定された送信レート状態を基に、送信レートを更新して、ステップＳ２０２に戻り、送信レートの更新の処理を繰り返す。
【０２０４】
ステップＳ２０７において、今回のロス率が、前回のロス率を１．１倍した値より大きくないと判定された場合、ステップＳ２１１に進み、RTCP解析部７７は、今回のロス率が、前回のロス率を０．９倍した値より小さいか否かを判定する。ステップＳ２１１において、今回のロス率が、前回のロス率を０．９倍した値より小さいと判定された場合、ロス率が減少しているので、ステップＳ２１２に進み、RTCP解析部７７は、ロス率状態を減少状態として、ロス率状態が減少状態であることを示す信号をレート制御部７６に供給する。ステップＳ２１２の処理の後、手続きは、ステップＳ２０９に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップＳ２０２に戻り、送信レートの更新の処理を繰り返す。
【０２０５】
ステップＳ２１１において、今回のロス率が、前回のロス率を０．９倍した値より小さくないと判定された場合、ロス率がほぼ一定しているので、ステップＳ２１３に進み、RTCP解析部７７は、遅延時間状態を一定状態として、遅延時間状態が一定状態であることを示す信号をレート制御部７６に供給する。ステップＳ２１３の処理の後、手続きは、ステップＳ２０９に進み、送信レート状態の遷移の処理を実行するとともに、送信レートを更新して、ステップＳ２０２に戻り、送信レートの更新の処理を繰り返す。
【０２０６】
このように、パケットのロス率を基に、送信レートを更新することができる。
【０２０７】
次に、図１９のフローチャートを参照して、図１７のステップＳ２０９の処理に対応する送信レート状態の遷移の処理の詳細を説明する。ステップＳ２３１において、レート制御部７６は、自分が記憶している送信レート状態を基に、送信レート状態がレート維持状態であるか否かを判定し、送信レート状態がレート維持状態であると判定された場合、ステップＳ２３２に進み、RTCP解析部７７から供給された信号を基に、ロス率状態が増加状態であるか否かを判定する。
【０２０８】
ステップＳ２３２において、ロス率状態が増加状態であると判定された場合、ステップＳ２３３に進み、レート制御部７６は、自分が記憶している、レート維持状態である送信レート状態をレート減少状態に遷移させて、処理は終了する。
【０２０９】
ステップＳ２３２において、ロス率状態が増加状態でないと判定された場合、ステップＳ２３４に進み、レート制御部７６は、RTCP解析部７７から供給された信号を基に、ロス率状態が減少状態であるか否かを判定する。
【０２１０】
ステップＳ２３４において、ロス率状態が減少状態であると判定された場合、ステップＳ２３５に進み、レート制御部７６は、自分が記憶している、レート維持状態である送信レート状態をレート増加状態に遷移させて、処理は終了する。
【０２１１】
ステップＳ２３４において、ロス率状態が減少状態でないと判定された場合、ロス率状態は一定状態なので、ステップＳ２３６に進み、レート制御部７６は、自分が記憶している、レート維持状態である送信レート状態を維持して（状態を遷移させないで）、処理は終了する。
【０２１２】
ステップＳ２３１において、送信レート状態がレート維持状態でないと判定された場合、ステップＳ２３７に進み、レート制御部７６は、自分が記憶している送信レート状態を基に、送信レート状態がレート増加状態であるか否かを判定する。
【０２１３】
ステップＳ２３７において、送信レート状態がレート増加状態であると判定された場合、ステップＳ２３８に進み、レート制御部７６は、RTCP解析部７７から供給された信号を基に、ロス率状態が増加状態であるか否かを判定する。
【０２１４】
ステップＳ２３８において、ロス率状態が増加状態であると判定された場合、ステップＳ２３９に進み、レート制御部７６は、自分が記憶している、レート増加状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
【０２１５】
ステップＳ２３８において、ロス率状態が増加状態でないと判定された場合、ロス率状態は減少状態であるか、または一定状態なので、ステップＳ２４０に進み、レート制御部７６は、自分が記憶している、レート増加状態である送信レート状態を維持して（状態を遷移させないで）、処理は終了する。
【０２１６】
ステップＳ２３７において、送信レート状態がレート増加状態でないと判定された場合、送信レート状態はレート減少状態なので、ステップＳ２４１に進み、レート制御部７６は、RTCP解析部７７から供給された信号を基に、ロス率状態が減少状態であるか否かを判定する。
【０２１７】
ステップＳ２４１において、ロス率状態が減少状態であると判定された場合、ステップＳ２４２に進み、レート制御部７６は、自分が記憶している、レート減少状態である送信レート状態をレート維持状態に遷移させて、処理は終了する。
【０２１８】
ステップＳ２４１において、ロス率状態が減少状態でないと判定された場合、ロス率状態は増加状態であるか、または一定状態なので、ステップＳ２４３に進み、レート制御部７６は、自分が記憶している、レート減少状態である送信レート状態を維持して（状態を遷移させないで）、処理は終了する。
【０２１９】
このように、レート制御部７６は、ロス率状態に基づいて、送信レート状態を遷移させるか、維持させる。
【０２２０】
図２０は、ロス率状態に基づく、送信レート状態の状態遷移図である。図２０のＳは、レート維持状態を示し、Ｕは、レート増加状態を示し、Ｄは、レート減少状態を示す。図１１に示す場合と同様に、レート維持状態は、処理を開始する場合の初期状態でもある。
【０２２１】
送信レート状態がレート維持状態である場合、ロス率状態が増加状態であるとき、送信レート状態は、レート減少状態に遷移する。送信レート状態がレート維持状態である場合、ロス率状態が減少状態であるとき、送信レート状態は、レート増加状態に遷移する。送信レート状態がレート維持状態である場合、ロス率状態が一定状態であるとき、送信レート状態は、遷移しないで、レート維持状態に維持される。
【０２２２】
送信レート状態がレート増加状態である場合、ロス率状態が増加状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート増加状態である場合、ロス率状態が一定状態または減少状態であるとき、送信レート状態は、遷移しないで、レート増加状態に維持される。
【０２２３】
送信レート状態がレート減少状態である場合、ロス率状態が減少状態であるとき、送信レート状態は、レート維持状態に遷移する。送信レート状態がレート減少状態である場合、ロス率状態が一定状態または増加状態であるとき、送信レート状態は、遷移しないで、レート減少状態に維持される。
【０２２４】
以上のように、本発明においては、通信網１３の状態に応じて、送信レートが制御されると共に、送信レートの制御の状態に応じて、パケットを再送するか、または再送が禁止される。
【０２２５】
従って、送信レートを下げている場合に、再送要求によって、伝送データ量を増加させてしまうような事態を回避して、送信レートを適正に制御するとともに、相手により確実に到達するように再送パケットを送信することができるようになる。
【０２２６】
このように、再送パケットを再送するようにした場合には、受信側において、エラーを訂正することができる。また、送信パケットの送信レートが所定の値となるようにストリーミングデータを符号化し、通信網の伝送状態を取得し、取得した伝送状態を基に、送信パケットの送信レートを増加させるか、減少させるか、または維持させるように符号化を指示し、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送が要求された場合、送信レートを増加させるように符号化を指示しているとき、要求された再送パケットを再送し、送信レートを減少させるように符号化を指示しているとき、要求された再送パケットの再送を禁止するように、再送パケットの送信を制御するようにした場合には、送信レートを適正に制御するとともに、相手により確実に到達するように再送パケットを送信することができる。
【０２２７】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０２２８】
この記録媒体は、図２に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク５１（フレキシブルディスクを含む）、光ディスク５２（CD-ROM(Compact Disc-Read Only Memory)、ＤＶＤ(Digital Versatile Disc)を含む）、光磁気ディスク５３（ＭＤ(Mini-Disc)（商標）を含む）、若しくは半導体メモリ５４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM３２や、記憶部３８に含まれるハードディスクなどで構成される。
【０２２９】
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
【０２３０】
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２３１】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２３２】
【図１】本発明に係る通信システムの一実施の形態を示す図である。
【図２】サーバの構成の例を示すブロック図である。
【図３】サーバの機能の構成を示すブロック図である。
【図４】クライアントの機能の構成を示すブロック図である。
【図５】送信の処理を説明するフローチャートである。
【図６】RTPパケットを説明する図である。
【図７】送信レートの更新の処理を説明するフローチャートである。
【図８】NACKパケットを説明する図である。
【図９】RTT計測パケットを説明する図である。
【図１０】送信レート状態の遷移の処理を説明するフローチャートである。
【図１１】送信レート状態の状態遷移図である。
【図１２】再送の処理を説明するフローチャートである。
【図１３】モードスイッチの設定の処理を説明するフローチャートである。
【図１４】デコードの処理を説明するフローチャートである。
【図１５】RTT計測パケットの返信の処理を説明するフローチャートである。
【図１６】再送パケットの再送の処理を説明する図である。
【図１７】送信レートの更新の他の処理を説明するフローチャートである。
【図１８】レシーバレポートパケットを説明する図である。
【図１９】送信レート状態の遷移の処理を説明するフローチャートである。
【図２０】送信レート状態の状態遷移図である。
【符号の説明】
【０２３３】
１２  サーバ，  １３  通信網，  １４  クライアント，  ３１  ＣＰＵ，  ３２  ＲＯＭ，  ３３  ＲＡＭ，  ３８  記録部，  ５１  磁気ディスク，  ５２  光ディスク，  ５３  光磁気ディスク，  ５４  半導体メモリ，  ７１  エンコーダ，  ７２  パケタイザ，  ７３  再送用バッファ，  ７４  RTT計測部，  ７５  NACK処理部，  ７６  レート制御部，  ７７  RTCP解析部，  ７８  モードスイッチ設定部，  ９１  通信部，  ９２  RTP処理部，  ９３  バッファ，  ９４  デコーダ，  ９５  NACK処理部，  ９６  RTT処理部
【図１】
2005136548.tif 000003
【図２】
2005136548.tif 000004
【図３】
2005136548.tif 000005
【図４】
2005136548.tif 000006
【図５】
2005136548.tif 000007
【図６】
2005136548.tif 000008
【図７】
2005136548.tif 000009
【図８】
2005136548.tif 000010
【図９】
2005136548.tif 000011
【図１０】
2005136548.tif 000012
【図１１】
2005136548.tif 000013
【図１２】
2005136548.tif 000014
【図１３】
2005136548.tif 000015
【図１４】
2005136548.tif 000016
【図１５】
2005136548.tif 000017
【図１６】
2005136548.tif 000018
【図１７】
2005136548.tif 000019
【図１８】
2005136548.tif 000020
【図１９】
2005136548.tif 000021
【図２０】
2005136548.tif 000022