(57)【要約】【課題】送信側で再送が間に合うかどうかを判断して、無駄な再送を防止することができる。【解決手段】  NACK処理部９５は、正常に受信できなかった送信パケットに対応する再送パケットがサーバから再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための、再送パケットの再生時刻などの時間算出情報を取得する。通信部９１は、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットをサーバに送信する。本発明は、サーバから送信されてくる、ストリーミングデータを受信するクライアントに適用できる。【選択図】図４
2005136547.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に従ったデータ伝送における問題を解決する案として、データ転送の信頼性のより高い転送プロトコルであるTCP（Transmission Control Protocol）に従ってパケットの再送要求およびパケットの再送を行う方法が考えられる。
【００１４】
しかし、TCPにおいて、パケットロスが生じた場合、パケットが再送されるため、エラーには強いが、再送されたパケットの受信が再生時刻に間に合わない可能性があり、リアルタイム通信には不向きである。
【００１５】
さらに、パケットエラーが生じた場合のエラー訂正方式として、FEC（Forward Error Correction）方式を用いることが考えられる。FEC方式においては、エラー訂正を行うためのFECデータを冗長データとして送信し、エラーが発生した場合には、受信側において、受信したFECデータを基にエラーが訂正される。
【００１６】
また、再送要求の処理タイミングとして、各フレームの先頭パケットの受信時、各フレームの最終パケットの受信時、最終処理期限、および一定間隔毎等の各種タイミングでロストパケットの検出処理を実行し、再送要求を実行し、データ受信端末が、再生処理時間、伝播遅延時間を考慮し、再生処理に間に合わない場合には、再生要求処理を実行しないようにしているものもある（特許文献１参照）。
【００１７】
さらに、サーバは、送信するパケットのうち優先度が高いパケットのみを再送用バッファに記憶し、この記憶されたパケットの中から端末装置の再送要求に対応するパケットを抽出して再送するようにしているものもある（特許文献２参照）。このサーバは、端末装置との間のパケットの往復時間ＲＴＴを算出し、端末装置は、サーバから送信された往復時間ＲＴＴと現在時刻との和がパケットの再生時刻よりも小さい場合にのみ、優先度が高い欠落パケットの再送要求を行う。
【００１８】
【特許文献１】特開２００３−１６９０４０号公報
【００１９】
【特許文献２】特開２００２−８４３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかしながら、エラー訂正のために冗長データを送信すると、スループットが低下するという問題がある。また、伝送の状況に合わせて、付加すべき最適な冗長データを決定することは困難であり、オーバーヘッドとして処理が追加されてしまうなどの問題がある。
【課題を解決するための手段】
【００２１】
本発明の通信システムは、受信装置が、正常に受信できなかった送信パケットに対応する再送パケットが送信装置から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得手段と、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの送信装置への送信を制御する第１の送信制御手段とを含み、送信装置が、受信装置から送信されてきた、再送要求パケットの受信を制御する受信制御手段と、自分が再送パケットを再送してから受信装置が再送パケットを受信するまでの遅延時間を算出する遅延時間算出手段と、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できるか否かを判定する判定手段と、ストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する第２の送信制御手段とを含むことを特徴とする。
【００２２】
本発明の受信装置は、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得手段と、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの相手への送信を制御する送信制御手段とを含むことを特徴とする。
【００２３】
時間算出情報は、再送を要求する再送パケットに対応する、正常に受信できなかった送信パケットのストリーミングデータの再生時刻を含むようにすることができる。
【００２４】
時間算出情報は、次に再生しようとするストリーミングデータの再生時刻、次に再生しようとするストリーミングデータを格納する送信パケットのシーケンス番号、および再送を要求する再送パケットに対応する、正常に受信できなかった送信パケットのシーケンス番号を含むようにすることができる。
【００２５】
本発明の受信方法は、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得ステップと、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの相手への送信を制御する送信制御ステップとを含むことを特徴とする。
【００２６】
本発明の第１の記録媒体のプログラムは、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得ステップと、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの相手への送信を制御する送信制御ステップとを含むことを特徴とする。
【００２７】
本発明の第１のプログラムは、コンピュータに、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得ステップと、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの相手への送信を制御する送信制御ステップとを実行させることを特徴とする。
【００２８】
本発明の送信装置は、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットの受信を制御する受信制御手段と、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出する遅延時間算出手段と、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定する判定手段と、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する送信制御手段とを含むことを特徴とする。
【００２９】
受信制御手段は、再送が要求された再送パケットに対応する、相手が正常に受信できなかった送信パケットのストリーミングデータの再生時刻を含む時間算出情報が格納されている再送要求パケットの受信を制御し、判定手段は、現在時刻からストリーミングデータの再生時刻までの時間が、遅延時間以上である場合、ストリーミングデータの再生までに、相手が再送パケットを受信できると判定するようにすることができる。
【００３０】
送信装置は、送信した送信パケットの送信時刻とシーケンス番号とを対応させて記憶する記憶手段をさらに設け、受信制御手段は、相手が次に再生しようとするストリーミングデータの再生時刻および次に再生しようとするストリーミングデータを格納する送信パケットのシーケンス番号、並びに再送が要求された再送パケットに対応する、相手が正常に受信できなかった送信パケットのシーケンス番号を含む時間算出情報が格納されている再送要求パケットの受信を制御し、判定手段は、対応して記憶されている送信時刻およびシーケンス番号を基に、次に再生しようとするストリーミングデータを格納した送信パケットの送信時刻から相手が正常に受信できなかった送信パケットの送信時刻までの時間を、次に再生しようとするストリーミングデータの再生時刻に加算して得られた時刻と現在時刻との時間が、遅延時間以上である場合、ストリーミングデータの再生までに、相手が再送パケットを受信できると判定するようにすることができる。
【００３１】
本発明の送信方法は、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットの受信を制御する受信制御ステップと、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出する遅延時間算出ステップと、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定する判定ステップと、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する送信制御ステップとを含むことを特徴とする。
【００３２】
本発明の第２の記録媒体のプログラムは、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットの受信を制御する受信制御ステップと、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出する遅延時間算出ステップと、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定する判定ステップと、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する送信制御ステップとを含むことを特徴とする。
【００３３】
本発明の第２のプログラムは、コンピュータに、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットの受信を制御する受信制御ステップと、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出する遅延時間算出ステップと、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定する判定ステップと、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する送信制御ステップとを実行させることを特徴とする。
【００３４】
本発明の通信システムにおいては、正常に受信できなかった送信パケットに対応する再送パケットが送信装置から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報が取得され、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットが送信装置に送信され、受信装置から送信されてきた、再送要求パケットが受信され、自分が再送パケットを再送してから受信装置が再送パケットを受信するまでの遅延時間が算出され、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できるか否かが判定され、ストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できると判定された場合、要求された再送パケットが再送される。
【００３５】
本発明の受信装置および方法、第１の記録媒体、並びに第１のプログラムにおいては、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報が取得され、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットが相手に送信される。
【００３６】
本発明の送信装置および方法、第２の記録媒体、並びに第２のプログラムにおいては、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットが受信され、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間が算出され、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かが判定され、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットが再送される。
【００３７】
受信装置は、独立した装置であっても良いし、通信装置の受信処理を行うブロックであっても良い。
【００３８】
送信装置は、独立した装置であっても良いし、通信装置の送信処理を行うブロックであっても良い。
【発明の効果】
【００３９】
送信側で再送が間に合うかどうかを判断して、無駄な再送を防止することができる。その結果、送信側の処理負荷を増加させることなく、スループットの低下を防止することができる。
【発明を実施するための最良の形態】
【００４０】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００４１】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００４２】
本発明によれば、通信システムが提供される。この通信システムは、受信装置（例えば、図１のクライアント１４）が、正常に受信できなかった送信パケットに対応する再送パケットが送信装置から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得手段（例えば、図４のNACK処理部９５）と、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの送信装置への送信を制御する第１の送信制御手段（例えば、図４の通信部９１）とを含み、送信装置（例えば、図１のサーバ１２）が、受信装置から送信されてきた、再送要求パケットの受信を制御する受信制御手段（例えば、図３の通信部３９）と、自分が再送パケットを再送してから受信装置が再送パケットを受信するまでの遅延時間を算出する遅延時間算出手段（例えば、図３の片道遅延計算部７４）と、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できるか否かを判定する判定手段（例えば、図１３のステップＳ１０３の処理を実行する図３のNACK処理部７６）と、ストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する第２の送信制御手段（例えば、図１３のステップＳ１０４の処理を実行する図３のNACK処理部７６）とを含む。
【００４３】
本発明によれば、受信装置が提供される。この受信装置は、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得手段（例えば、図４のNACK処理部９５）と、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの相手への送信を制御する送信制御手段（例えば、図４の通信部９１）とを含む。
【００４４】
時間算出情報は、再送を要求する再送パケットに対応する、正常に受信できなかった送信パケットのストリーミングデータの再生時刻（例えば、図１１の再生時刻）を含むようにすることができる。
【００４５】
時間算出情報は、次に再生しようとするストリーミングデータの再生時刻（例えば、図１７の先頭シーケンスの再生時刻）、次に再生しようとするストリーミングデータを格納する送信パケットのシーケンス番号（例えば、図１７の先頭シーケンス番号）、および再送を要求する再送パケットに対応する、正常に受信できなかった送信パケットのシーケンス番号（例えば、図１７の要求シーケンス番号）を含むようにすることができる。
【００４６】
本発明によれば、受信方法が提供される。この受信方法は、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得ステップ（例えば、図１０のステップＳ７５の処理）と、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの相手への送信を制御する送信制御ステップ（例えば、図１０のステップＳ７６の処理）とを含む。
【００４７】
本発明によればプログラムが提供される。このプログラムは、コンピュータに、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得する取得ステップ（例えば、図１０のステップＳ７５の処理）と、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットの相手への送信を制御する送信制御ステップ（例えば、図１０のステップＳ７６の処理）とを実行させる。
【００４８】
このプログラムは、記録媒体（例えば、図２の磁気ディスク５１）に記録することができる。
【００４９】
本発明によれば、送信装置が提供される。この送信装置は、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットの受信を制御する受信制御手段（例えば、図３の通信部３９）と、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出する遅延時間算出手段（例えば、図３の片道遅延計算部７４）と、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定する判定手段（例えば、図１３のステップＳ１０３の処理を実行する図３のNACK処理部７６）と、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する送信制御手段（例えば、図１３のステップＳ１０４の処理を実行する図３のNACK処理部７６）とを含むことを特徴とする。
【００５０】
受信制御手段は、再送が要求された再送パケットに対応する、相手が正常に受信できなかった送信パケットのストリーミングデータの再生時刻を含む時間算出情報（例えば、図１１の再生時刻）が格納されている再送要求パケットの受信を制御し、判定手段は、現在時刻からストリーミングデータの再生時刻までの時間が、遅延時間以上である場合、ストリーミングデータの再生までに、相手が再送パケットを受信できると判定するようにすることができる。
【００５１】
送信装置は、送信した送信パケットの送信時刻とシーケンス番号とを対応させて記憶する記憶手段（例えば、図１４の送信履歴保持部１２１）をさらに設け、受信制御手段は、相手が次に再生しようとするストリーミングデータの再生時刻（例えば、図１７の先頭シーケンスの再生時刻）および次に再生しようとするストリーミングデータを格納する送信パケットのシーケンス番号（例えば、図１７の先頭シーケンス番号）、並びに再送が要求された再送パケットに対応する、相手が正常に受信できなかった送信パケットのシーケンス番号（例えば、図１７の要求シーケンス番号）を含む時間算出情報が格納されている再送要求パケットの受信を制御し、判定手段は、対応して記憶されている送信時刻およびシーケンス番号を基に、次に再生しようとするストリーミングデータを格納した送信パケットの送信時刻から相手が正常に受信できなかった送信パケットの送信時刻までの時間を、次に再生しようとするストリーミングデータの再生時刻に加算して得られた時刻と現在時刻との時間が、遅延時間以上である場合、ストリーミングデータの再生までに、相手が再送パケットを受信できると判定するようにすることができる。
【００５２】
本発明によれば、送信方法が提供される。この送信方法は、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットの受信を制御する受信制御ステップ（例えば、図１３のステップＳ１０１の処理）と、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出する遅延時間算出ステップ（例えば、図７のステップＳ３６の処理）と、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定する判定ステップ（例えば、図１３のステップＳ１０３の処理）と、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する送信制御ステップ（例えば、図１３のステップＳ１０４の処理）とを含むことを特徴とする。
【００５３】
本発明によればプログラムが提供される。このプログラムは、コンピュータに、相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットの受信を制御する受信制御ステップ（例えば、図１３のステップＳ１０１の処理）と、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出する遅延時間算出ステップ（例えば、図７のステップＳ３６の処理）と、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定する判定ステップ（例えば、図１３のステップＳ１０３の処理）と、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットの再送を制御する送信制御ステップ（例えば、図１３のステップＳ１０４の処理）とを実行させることを特徴とする。
【００５４】
このプログラムは、記録媒体（例えば、図２の磁気ディスク５１）に記録することができる。
【００５５】
本発明は、例えば、インターネット電話、遠隔テレビ会議システム、ライブ映像ストリーミング配信システム、またはテレビ電話などのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
【００５６】
図１は、本発明に係る通信システムの一実施の形態を示す図である。カメラ１１は、画像を撮像して、撮像した画像に対応する画像データをサーバ１２に供給する。例えば、カメラ１１は、動画像を撮像して、動画像に対応する画像データをサーバ１２に供給する。
【００５７】
画像データは、ストリーミングデータの一例である。ストリーミングデータは、音声のデータ、またはリアルタイム制御データなど、時間の経過に対応して順次送信または受信が要求されるデータであればよい。
【００５８】
サーバ１２は、カメラ１１から供給された画像データをパケットに格納して、パケットを通信網１３を介して、クライアント１４に送信する。
【００５９】
通信網１３は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、所定の遅延時間で、サーバ１２から送信されたパケットをクライアント１４まで伝送する。
【００６０】
クライアント１４は、通信網１３を介してサーバ１２から送信されてきたパケットを受信して、受信したパケットに格納されている画像データを抽出する。
【００６１】
クライアント１４は、ストリーミングデータが格納されているパケットを正常に受信できなかった場合、サーバ１２に再送を要求する。サーバ１２は、クライアント１４から再送が要求された場合、通信網１３の状態に応じて、ストリーミングデータが格納されているパケットを再送する。
【００６２】
図２は、サーバ１２の構成の例を示すブロック図である。CPU（Central Processing Unit）３１は、ROM（Read Only Memory）３２、または記録部３８に記録されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）３３には、CPU３１が実行するプログラムやデータなどが適宜記憶される。これらのCPU３１、ROM３２、およびRAM３３は、バス３４により相互に接続されている。
【００６３】
CPU３１にはまた、バス３４を介して入出力インタフェース３５が接続されている。入出力インタフェース３５には、キーボード、マウス、スイッチなどよりなる入力部３６、ディスプレイ、スピーカ、ランプなどよりなる出力部３７が接続されている。CPU３１は、入力部３６から入力される指令に対応して各種の処理を実行する。
【００６４】
入出力インタフェース３５に接続されている記録部３８は、例えばハードディスクなどで構成され、CPU３１が実行するプログラムや各種のデータを記録する。通信部３９は、インターネット、その他のネットワークなどの通信網１３を介して、クライアント１４などの外部の装置と通信する。
【００６５】
また、通信部３９を介してプログラムを取得し、記録部３８に記録してもよい。
【００６６】
入出力インタフェース３５に接続されているドライブ４０は、磁気ディスク５１、光ディスク５２、光磁気ディスク５３、或いは半導体メモリ５４などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部３８に転送され、記録される。
【００６７】
なお、クライアント１４は、サーバ１２と同様に構成されるので、その説明は省略する。
【００６８】
図３は、サーバ１２の機能の構成を示すブロック図である。
【００６９】
サーバ１２は、エンコーダ７１、パケタイザ７２、バッファ７３、片道遅延計算部７４、片道遅延保持部７５、およびNACK（Negative Acknowledgment）処理部７６を含む。
【００７０】
エンコーダ７１は、所定のビットレートで、供給されたストリーミングデータの一例である画像データを符号化し、符号化された画像データをパケタイザ７２に供給する。パケタイザ７２は、エンコーダ７１から供給された、符号化されている画像データを所定の方式のパケットに格納して、パケットを通信部３９およびバッファ７３に供給する。
【００７１】
バッファ７３は、パケタイザ７２から供給されたパケットを再送パケットとして一時的に記憶し、NACK処理部７６の制御に基づいて、記憶している再送パケットを通信部３９に供給する。
【００７２】
通信部３９は、パケタイザ７２から供給されたパケットを送信パケットとして、通信網１３を介して、相手であるクライアント１４に送信する。通信部３９は、バッファ７３から供給された再送パケットを、通信網１３を介して、相手に送信する。
【００７３】
片道遅延計算部７４は、片道遅延計測パケットを通信部３９に供給する。片道遅延計測パケットの詳細は後述する。片道遅延計算部７４は、通信部３９が受信し、通信部３９から供給された片道遅延計測パケットを基に、通信網１３の片道遅延時間を算出する。片道遅延計算部７４は、算出した片道遅延時間を片道遅延保持部７５に供給する。
【００７４】
片道遅延保持部７５は、片道遅延計算部７４から供給された片道遅延時間を記憶して、記憶している片道遅延時間をNACK処理部７６に供給する。
【００７５】
NACK処理部７６は、片道遅延保持部７５から供給された片道遅延時間、および通信部３９から供給された再送要求パケットを基に、バッファ７３に格納されている再送パケットの相手への送信を制御する。再送要求パケットの詳細は後述する。
【００７６】
図４は、クライアント１４の機能の構成を示すブロック図である。
【００７７】
クライアント１４は、通信部９１、RTP処理部９２、バッファ９３、デコーダ９４、NACK処理部９５、および片道遅延処理部９６を含む。
【００７８】
通信部９１は、クライアント１４の図２における通信部３９に相当し、通信網１３を介してサーバ１２から送信されてきた各種のパケットを受信する。通信部９１は、受信したパケットをRTP処理部９２または片道遅延処理部９６に供給する。
【００７９】
RTP処理部９２は、通信部９１が受信し、通信部９１から供給された送信パケットであるRTPパケットを検査して、送信パケットを正常に受信できたか否かを判定する。RTP処理部９２は、正常に送信パケットを受信できなかった場合、例えば、パケットロスが発生した場合、パケットロスが発生した送信パケットを示す情報をNACK処理部９５に供給する。RTP処理部９２は、正常に送信パケットを受信できた場合、送信パケットをバッファ９３に供給する。
【００８０】
バッファ９３は、RTP処理部９２から供給された送信パケットを一時的に記憶する。
【００８１】
デコーダ９４は、バッファ９３に記憶されている送信パケットから画像データを抽出して、エンコーダ７１に対応する復号方式で、抽出された画像データを復号して、復号された画像データを出力する。
【００８２】
NACK処理部９５は、RTP処理部９２から供給されたパケットロスが発生した送信パケットを示す情報を基に、パケットロスが発生した送信パケットの再送を要求する再送要求パケットを生成して、通信部９１に供給する。また、NACK処理部９５は、バッファに格納されている送信パケットを基に、パケットロスが発生した送信パケットの再送を要求する再送要求パケットを生成して、通信部９１に供給する。再送要求パケットは、例えば、後述するNACKパケットである。NACKパケットの詳細は、後述する。
【００８３】
通信部９１は、NACK処理部９５から供給された再送要求パケットを通信網１３を介して相手であるサーバ１２に送信する。
【００８４】
片道遅延処理部９６は、通信部９１が受信し、通信部９１から供給された片道遅延計測パケットを取得する。片道遅延処理部９６は、取得した片道遅延計測パケットのデータ部と同じデータ部を含む片道遅延計測パケットを生成して（データ部をコピーした片道遅延計測パケットを生成して）、生成した片道遅延計測パケットを通信部９１に供給する。通信部９１は、片道遅延処理部９６から供給された片道遅延計測パケットを通信網１３を介して相手であるサーバ１２に送信する。片道遅延計測パケットの詳細は、後述する。
【００８５】
なお、図３または図４で示されるサーバ１２またはクライアント１４の機能は、ハードウェアにより実現するようにしてもよく、ソフトウェア（プログラム）により実現するようにしてもよい。
【００８６】
次に、図５のフローチャートを参照して、送信プログラムを実行するサーバ１２による、送信の処理を説明する。ステップＳ１１において、サーバ１２は、送信の処理に必要なデータを初期化する。例えば、ステップＳ１１において、サーバ１２のエンコーダ７１は、内蔵しているタイマを初期値に設定する。より具体的には、例えば、エンコーダ７１は、タイマの値を０に設定する。
【００８７】
ステップＳ１２において、エンコーダ７１は、タイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していない場合、ステップＳ１２に戻り、タイマが終了するまで、判定の処理を繰り返す。
【００８８】
例えば、ステップＳ１２において、エンコーダ７１は、タイマの値と、予め定めた33msとを比較することにより、タイマが終了したか否かを判定する。この場合における、タイマの値と比較される33msは、フレームの数が１秒当たり３０である場合の例であり、本発明を限定するものではない。
【００８９】
なお、初期化の処理において、タイマの値を33msなどの所定の値に設定して、時間の経過に対応してタイマの値が減少するようにして、比較の処理において、タイマの値が０であるか否かを判定するようにしてもよい。以下に説明するタイマに関する処理において、同様である。
【００９０】
ステップＳ１２において、タイマが終了したと判定された場合、ステップＳ１３に進み、エンコーダ７１は、カメラ１１から供給された画像データをキャプチャする。ステップＳ１３において、例えば、エンコーダ７１は、カメラ１１から供給された画像データのうち、１フレーム分をキャプチャする。
【００９１】
ステップＳ１４において、エンコーダ７１は、キャプチャされた画像データを、エンコード（符号化）する。例えば、ステップＳ１４において、エンコーダ７１は、キャプチャされた画像データを、MPEG（Moving Pictures Experts Group）１，２，４，７、若しくは２１、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パケットをクライアント１４に送信する。
【０１０８】
次に、図７のフローチャートを参照して、送信プログラムを実行するサーバ１２による、片道遅延時間の計測の処理を説明する。ステップＳ３１において、片道遅延計算部７４は、タイマを初期化する。例えば、ステップＳ３１において、片道遅延計算部７４は、タイマの値を０に設定することにより初期化する。
【０１０９】
ステップＳ３２において、片道遅延計算部７４は、通信部３９が受信し、通信部３９から供給されたパケットを基に、片道遅延計測パケットを受信したか否かを判定する。ステップＳ３２において、片道遅延計測パケットを受信していないと判定された場合、ステップＳ３３に進み、片道遅延計算部７４は、タイマが終了したか否かを判定する。
【０１１０】
ステップＳ３３において、タイマが終了したと判定された場合、ステップＳ３４に進み、片道遅延計算部７４は、通信部３９に、片道遅延計測パケットを送信させる。例えば、ステップＳ３４において、片道遅延計算部７４は、現在時刻を格納した片道遅延計測パケットを生成して、生成した片道遅延計測パケットを通信部３９に供給する。通信部３９は、通信網１３を介して、クライアント１４宛てに、片道遅延計算部７４から供給された片道遅延計測パケットを送信する。
【０１１１】
ステップＳ３５において、片道遅延計算部７４は、タイマをセットして、ステップＳ３２に戻り、片道遅延時間の計測の処理を繰り返す。
【０１１２】
ステップＳ３３において、タイマが終了していないと判定された場合、ステップＳ３２に戻り、片道遅延時間の計測の処理を繰り返す。
【０１１３】
ステップＳ３２において、片道遅延計測パケットを受信したと判定された場合、ステップＳ３６に進み、片道遅延計算部７４は、片道遅延計測パケットを基に、片道遅延時間を算出する。
【０１１４】
図８は、片道遅延計測パケットを説明する図である。バージョン情報、パディング、およびSSRC識別子は、図６で示されるRTPパケットの場合と同様であるので、その説明は省略する。
【０１１５】
片道遅延計測パケットにおいて、ペイロードタイプは、２０５とされる。ペイロードタイプの次に配置される、１６ビットのメッセージ長は、NACKパケットの長さ（サイズ）を示す情報である。
【０１１６】
片道遅延計測パケットにおいて、３２ビットのSSRC識別子に続いて、３２ビットの名前が配置される。名前は、例えば、片道遅延計測パケットを取り扱うアプリケーションプログラムの名前である。
【０１１７】
片道遅延計測パケットにおいて名前の次に格納される送信時刻は、サーバ１２がクライアント１４に、その片道遅延計測パケットを送信した時刻を示す。
【０１１８】
また、クライアント１４は、片道遅延計測パケットの送信時刻をそのままにして、サーバ１２にその片道遅延計測パケットを即座に返送するので、サーバ１２が受信した片道遅延計測パケットに格納される送信時刻は、クライアント１４がサーバ１２に送信してきた片道遅延計測パケットに対応する片道遅延計測パケットをサーバ１２がクライアント１４に送信した時刻を示す。
【０１１９】
従って、サーバ１２は、片道遅延計測パケットの送信時刻を現在時刻から引き算し、その結果を２で割り算することにより、片道遅延時間を計算することができる。
【０１２０】
すなわち、例えば、ステップＳ３６において、片道遅延計算部７４は、図示せぬリアルタイムクロックによって示される片道遅延計測パケットを受信した時刻から、片道遅延計測パケットに格納されている送信時刻を引き算し、その結果を２で割ることにより、片道遅延時間を計算する。
【０１２１】
ステップＳ３７において、片道遅延計算部７４は、計算された片道遅延時間を片道遅延保持部７５に供給して、片道遅延保持部７５に片道遅延時間を格納させ、ステップＳ３２に戻り、片道遅延時間の計測の処理を繰り返す。
【０１２２】
このように、サーバ１２からクライアント１４まで通信網１３を介してパケットを伝送するのに要する時間を示す片道遅延時間が算出されて、片道遅延保持部７５に格納（記憶）される。
【０１２３】
次に、図９のフローチャートを参照して、クライアント１４による、片道遅延計測パケットの返信の処理を説明する。ステップＳ５１において、片道遅延処理部９６は、通信部９１がパケットを受信した場合に、通信部９１から供給されたパケットを基に、片道遅延計測パケットを受信したか否かを判定し、片道遅延計測パケットを受信していないと判定された場合、ステップＳ５１に戻り、片道遅延計測パケットが受信されるまで、判定の処理を繰り返す。
【０１２４】
ステップＳ５１において、片道遅延計測パケットを受信したと判定された場合、ステップＳ５２に進み、片道遅延処理部９６は、直ちに、受信した片道遅延計測パケットのデータ部（図８のヘッダを除いた部分）と同様のデータ部の片道遅延計測パケットを生成して、生成した片道遅延計測パケットを通信部９１に供給する。そして、片道遅延処理部９６は、通信部９１に、通信網１３を介して、片道遅延計測パケットをサーバ１２宛てに直ちに送信させて、ステップＳ５１に戻り、上述した処理を繰り返す。
【０１２５】
このように、クライアント１４は、片道遅延計測パケットを受信すると、直ちに、サーバ１２に片道遅延計測パケットを返送する。
【０１２６】
図１０は、クライアント１４の再送要求の処理を説明するフローチャートである。ステップＳ７１において、NACK処理部９５は、再送要求の処理に必要なデータを初期化する。例えば、ステップＳ７１において、NACK処理部９５は、画像データが１秒当たり３０フレームで構成されている場合、内蔵しているタイマに、１フレーム当たりの時間、すなわち、33msを設定する。
【０１２７】
ステップＳ７２において、通信部９１は、通信網１３を介して、サーバ１２から送信されてきた送信パケットの一例であるRTPパケットを受信して、受信したRTPパケットをRTP処理部９２に供給する。ステップＳ７３において、RTP処理部９２は、通信部９１から供給されたRTPパケットを基に、送信パケットを正常に受信できたか否か、すなわち、パケットロスが発生したか否かを判定する。
【０１２８】
ステップＳ７３において、パケットロスが発生したと判定された場合、ステップＳ７４に進み、RTP処理部９２は、NACK処理部９５に再送要求を指示して、NACK処理部９５は、RTP処理部９２に格納されている、受信したRTPパケットから、パケットロスしたRTPパケットのシーケンス番号を取得する。
【０１２９】
ステップＳ７５において、NACK処理部９５は、取得したシーケンス番号から、パケットロスしたRTPパケットの再生時刻を計算する。例えば、１フレームの画像データが１つのRTPパケットに格納されている場合、ステップＳ７５において、NACK処理部９５は、パケットロスしたRTPパケットに格納されているシーケンス番号の値から、バッファ９３の先頭に格納されているRTPパケットに格納されているシーケンス番号の値を引き算して、その差をさらに１秒当たりフレームの数で割り算する。さらに、NACK処理部９５は、その商（割り算の結果）を図示せぬリアルタイムクロックから供給された現在時刻に加算することにより、パケットロスしたRTPパケットの再生時刻、より正確には、パケットロスしたRTPパケットに格納されている画像データが再生される再生時刻を計算する。
【０１３０】
例えば、１タイムスタンプにつき、１シーケンス番号であり、サンプリングレート（例えば、１秒間当たりのフレームの数）が１である場合を考える。すなわち、この場合、シーケンス番号は、タイムスタンプと同じ値となり、パケットの数は、１秒に１パケットとなる。ステップＳ７５において、NACK処理部９５は、パケットロスしたRTPパケットに格納されているタイムスタンプの値から、バッファ９３の先頭に格納されているRTPパケットに格納されているタイムスタンプの値を引き算して、その差をさらにサンプリングレートで割り算する。さらに、NACK処理部９５は、その商（割り算の結果）を図示せぬリアルタイムクロックから供給された現在時刻に加算することにより、パケットロスしたRTPパケットに格納されている画像データが再生される再生時刻を計算する。
【０１３１】
ステップＳ７６において、NACK処理部９５は、通信部９１にロスパケットの再送要求を送信させて、ステップＳ７２に戻り、上述した処理を繰り返す。例えば、ステップＳ７６において、NACK処理部９５は、ステップＳ７５の処理で算出された、パケットロスしたRTPパケットの再生時刻を格納したNACKパケットを生成して、生成したNACKパケットを通信部９１に供給する。NACK処理部９５は、通信部９１に、通信網１３を介して、サーバ１２宛てにNACKパケットを送信させることにより、ロスパケットの再送を要求する。
【０１３２】
図１１は、ステップＳ７６の処理または後述するステップＳ８０の処理で送信されるNACKパケットを説明する図である。バージョン情報、パディング、メッセージ長、SSRC識別子、および名前は、図８で示される片道遅延計測パケットの場合と同様であるので、その説明は省略する。
【０１３３】
NACKパケットにおいて、ペイロードタイプは、２０４とされる。
【０１３４】
NACKパケットにおいて、３２ビットの名前に続いて、再送を要求するRTPパケットに格納されているシーケンス番号と同じ、３２ビットの要求シーケンス番号が配置される。
【０１３５】
さらに、NACKパケットにおいて要求シーケンス番号の次に格納される再生時刻は、パケットロスしたRTPパケットの再生時刻、より正確には、パケットロスしたRTPパケットに格納されている画像データが再生される時刻を示す。
【０１３６】
ステップＳ７３において、パケットロスが発生していないと判定された場合、ステップＳ７７に進み、NACK処理部９５は、タイマが終了したか否かを判定し、タイマが終了したと判定された場合、例えば、１フレーム当たりの時間が経過しているので、ステップＳ７８に進み、バッファ９３から、届いていない送信パケットを検出する。
【０１３７】
ステップＳ７９において、NACK処理部９５は、ステップＳ７５の処理と同様の処理で、届いていない（ロスした）送信パケットのシーケンス番号から、届いていない送信パケットに格納されている画像データの再生時刻を計算する。
【０１３８】
例えば、１タイムスタンプにつき、１シーケンス番号であり、サンプリングレートが１である場合を考える。図１２で示されるように、バッファ９３に、シーケンス番号が１である送信パケット１０１−１、シーケンス番号が２である送信パケット１０１−２、シーケンス番号が３である送信パケット１０１−３、シーケンス番号が４である送信パケット１０１−４、およびシーケンス番号が６である送信パケット１０１−６が、順に格納されている場合、ステップＳ７８において、NACK処理部９５は、５であるシーケンス番号が欠けているので、届いていない、シーケンス番号が５である送信パケット１０１−５を検出する。
【０１３９】
そして、ステップＳ７９において、NACK処理部９５は、パケットロスした送信パケット１０１−５のシーケンス番号である５から、バッファ９３の先頭に格納されている送信パケット１０１−１のシーケンス番号である１を引き算して、その結果である４をサンプリングレートである１で割り算する。さらに、NACK処理部９５は、割り算の結果である４を現在時刻に加算することにより、パケットロスしたRTPパケットに格納されている画像データが再生される再生時刻である、現在時刻から４秒後の時刻を計算する。
【０１４０】
ステップＳ８０において、NACK処理部９５は、ステップＳ７６の処理と同様の処理で、通信部９１に届いていないパケットの再送要求を送信させる。ステップＳ８１において、NACK処理部９５は、タイマをセットして、ステップＳ７２に戻り、上述した処理を繰り返す。
【０１４１】
ステップＳ７７において、タイマが終了していないと判定された場合、バッファ９３に格納されているパケットに格納されている画像データの再生が進んでいないので、ステップＳ７２に戻り、上述した処理を繰り返す。
【０１４２】
次に、図１３のフローチャートを参照して、サーバ１２による、再送の処理を説明する。ステップＳ１０１において、通信部３９は、通信網１３を介して、クライアント１４から送信されてきたパケットを受信する。通信部３９は、受信したパケットが再送要求であるNACKパケットである場合、受信したパケットをNACK処理部７６に供給する。
【０１４３】
ステップＳ１０２において、NACK処理部７６は、再送要求を受信したか否かを判定する。例えば、ステップＳ１０２において、NACK処理部７６は、通信部３９からNACKパケットが供給されたか否かにより、再送要求を受信したか否かを判定する。
【０１４４】
ステップＳ１０２において、再送要求を受信していないと判定された場合、ステップＳ１０１に戻り、再送要求を受信するまで、パケットの受信および判定の処理を繰り返す。
【０１４５】
ステップＳ１０２において、例えば、供給されたパケットがNACKパケットであり、再送要求を受信したと判定された場合、ステップＳ１０３に進み、NACK処理部７６は、再送が間に合うか否かを判定する。
【０１４６】
例えば、ステップＳ１０３において、NACK処理部７６は、片道遅延保持部７５から、片道遅延保持部７５に格納されている片道遅延時間を取得して、現在時刻に取得した片道遅延時間を加算することにより、クライアント１４に再送パケットが到達する到達時刻を計算する。そして、NACK処理部７６は、到達時刻とNACKパケットに格納されている再生時刻とを比較する。
【０１４７】
NACKパケットに格納されている再生時刻は、再送が要求された、パケットロスしたRTPパケットに格納されている画像データが再生される時刻を示すので、到達時刻が、NACKパケットに格納されている再生時刻以前であれば（到達時刻が、再生時刻以下であれれば）、NACK処理部７６は、再送が間に合うと判定する。
【０１４８】
ステップＳ１０３において、再送が間に合うと判定された場合、ステップＳ１０４に進み、NACK処理部７６は、該当するシーケンス番号のパケットを通信部３９に送信させて、ステップＳ１０１に戻り、再送の処理を繰り返す。例えば、ステップＳ１０４において、NACK処理部７６は、NACKパケットから要求シーケンス番号を抽出し、バッファ７３に、要求シーケンス番号に該当するシーケンス番号の再送パケットを通信部３９に供給させる。通信部３９は、通信網１３を介して、バッファ７３から供給された再送パケットをクライアント１４に送信する。
【０１４９】
ステップＳ１０３において、再送が間に合わないと判定された場合、再送パケットを送信しても受信側において再生に使用することができないので、ステップＳ１０４をスキップして、再送パケットを送信しないで、ステップＳ１０１に戻り、再送の処理を繰り返す。
【０１５０】
このように、クライアント１４から再送が要求された場合、サーバ１２は、再送が間に合うとき、すなわち、再送した再送パケットに格納された画像データがクライアント１４において再生に使用できるとき、再送パケットをクライアント１４に送信し、再送が間に合わないとき、すなわち、再送しても再送パケットに格納された画像データがクライアント１４において再生に使用できないとき、再送パケットをクライアント１４に送信しない。
【０１５１】
このようにすることで、サーバ１２による、無用な再送パケットの送信を抑制して、通信網１３の負荷を下げることができる。これにより、サーバ１２から送信される送信パケットがより確実にクライアント１４に伝送されるようになる。
【０１５２】
次に、他の実施の形態について説明する。
【０１５３】
図１４は、サーバ１２の他の構成を示すブロック図である。図１４において、図３に示す場合と同様の部分には同一の番号を付してあり、その説明は適宜省略する。
【０１５４】
通信部３９は、送信した送信パケットのシーケンス番号および送信時刻を送信履歴保持部１２１に供給する。
【０１５５】
送信履歴保持部１２１は、通信部３９から供給された、送信した送信パケットのシーケンス番号および送信時刻を対応させて、記憶する。送信履歴保持部１２１は、対応して記憶している、送信パケットのシーケンス番号および送信時刻をNACK処理部１２２に供給する。
【０１５６】
例えば、送信履歴保持部１２１は、リングバッファであるFIFO（First-In First-Out）バッファからなり、送信された送信パケットであるRTPパケットのシーケンス番号および送信時刻を対応させて順に記憶する。
【０１５７】
NACK処理部１２２は、送信履歴保持部１２１から供給されたシーケンス番号および送信時刻、片道遅延保持部７５から供給された片道遅延時間、並びに通信部３９から供給された再送要求パケットを基に、バッファ７３に格納されている再送パケットの相手への送信を制御する。
【０１５８】
次に、図１４で示される構成を有するサーバ１２による送信の処理を図１５のフローチャートを参照して説明する。ステップＳ１２１乃至ステップＳ１２７の処理は、それぞれ、図５のステップＳ１１乃至ステップＳ１７の処理のそれぞれと同様なので、その説明は省略する。
【０１５９】
ステップＳ１２８において、通信部３９は、送信履歴保持部１２１に、送信した送信パケットであるRTPパケットの送信時刻およびシーケンス番号を供給して、送信履歴保持部１２１に、送信時刻およびシーケンス番号を対応させて格納（記憶）させる。
【０１６０】
ステップＳ１２９およびステップＳ１３０の処理は、それぞれ、図５のステップＳ１８およびステップＳ１９の処理のそれぞれと同様なので、その説明は省略する。
【０１６１】
このように、送信履歴保持部１２１は、送信した送信パケットの一例であるRTPパケットの送信時刻およびシーケンス番号を対応させて記憶する。
【０１６２】
次に、クライアント１４による再送要求の他の処理を図１６のフローチャートを参照して説明する。ステップＳ１４１乃至ステップＳ１４３の処理は、それぞれ、図１０のステップＳ７１乃至ステップＳ７３の処理のそれぞれと同様なので、その説明は省略する。
【０１６３】
ステップＳ１４４において、RTP処理部９２は、NACK処理部９５に再送要求を指示して、NACK処理部９５は、バッファ９３の先頭に格納されているパケットの再生時刻およびシーケンス番号、並びに、RTP処理部９２に格納されている、受信したRTPパケットから、パケットロスしたRTPパケットのシーケンス番号を取得する。
【０１６４】
例えば、ステップＳ１４４において、NACK処理部９５は、バッファ９３から、バッファ９３の先頭に格納されているRTPパケットを取得して、取得したRTPパケットに格納されているシーケンス番号を取得する。さらに、NACK処理部９５は、バッファ９３の先頭に格納されているRTPパケットに格納されている画像データが次のタイミングで再生されるので、現在時刻に、１秒間当たりのフレームの数から定まる１つのフレーム当たりの期間を加算することにより、バッファ９３の先頭に格納されているパケットの再生時刻を求める。
【０１６５】
また、例えば、ステップＳ１４４において、NACK処理部９５は、バッファ９３から、バッファ９３の先頭に格納されているRTPパケットを取得して、取得したRTPパケットに格納されているシーケンス番号を取得する。さらに、NACK処理部９５は、現在デコーダ９４によって復号されている画像データを格納するRTPパケットのタイムスタンプから、バッファ９３の先頭に格納されているRTPパケットのタイムスタンプを引き算して、その結果を１秒間当たりのフレームの数から定まる１つのフレーム当たりの期間であるサンプリングレートにより割り算して、その割り算の結果である商に現在時刻を加算することにより、バッファ９３の先頭に格納されているパケットの再生時刻を求める。
【０１６６】
なお、タイムスタンプとシーケンス番号との関係および現在デコーダ９４によって復号されている画像データを格納するRTPパケットのシーケンス番号から、バッファ９３の先頭に格納されているパケットのシーケンス番号を基に、バッファ９３の先頭に格納されているパケットの再生時刻を求めるようにしてもよい。
【０１６７】
ステップＳ１４５において、NACK処理部９５は、通信部９１にロスパケットの再送要求を送信させて、ステップＳ１４２に戻り、上述した処理を繰り返す。例えば、ステップＳ１４５において、NACK処理部９５は、ステップＳ１４４の処理で取得された、バッファ９３の先頭に格納されているパケットの再生時刻およびシーケンス番号、並びにパケットロスしたRTPパケットのシーケンス番号を格納したNACKパケットを生成する。そして、NACK処理部９５は、生成したNACKパケットを通信部９１に供給する。NACK処理部９５は、通信部９１に、通信網１３を介して、サーバ１２宛てにNACKパケットを送信させることにより、ロスパケットの再送を要求する。
【０１６８】
ステップＳ１４６およびステップＳ１４７は、それぞれ、図１０のステップＳ７７およびステップＳ７８の処理と同様なので、それ説明は省略する。
【０１６９】
ステップＳ１４８において、NACK処理部９５は、ステップＳ１４４の処理と同様の処理で、バッファ９３の先頭に格納されているパケットの再生時刻およびシーケンス番号、並びにパケットロスしたRTPパケットのシーケンス番号を取得する。
【０１７０】
ステップＳ１４９において、NACK処理部９５は、ステップＳ１４５の処理と同様の処理で、通信部９１に届いていないパケットの再送要求を送信させる。ステップＳ１５０において、NACK処理部９５は、タイマをセットして、ステップＳ１４２に戻り、上述した処理を繰り返す。
【０１７１】
図１７は、ステップＳ１４５またはステップＳ１４９の処理で生成され、送信されるNACKパケットを説明する図である。バージョン情報、パディング、メッセージ長、SSRC識別子、および名前は、図８で示される片道遅延計測パケットの場合と同様であるので、その説明は省略する。
【０１７２】
NACKパケットにおいて、ペイロードタイプは、２０４とされる。
【０１７３】
NACKパケットにおいて、３２ビットの名前に続いて、再送を要求するRTPパケットに格納されているシーケンス番号と同じ、３２ビットの要求シーケンス番号が配置される。
【０１７４】
ステップＳ１４５またはステップＳ１４９の処理で生成され、送信されるNACKパケットにおいては、要求シーケンス番号に続いて、先頭シーケンス番号および先頭シーケンスの再生時刻が配置される。
【０１７５】
先頭シーケンス番号には、バッファ９３の先頭に格納されているRTPパケットのシーケンス番号が格納される。先頭シーケンスの再生時刻には、バッファ９３の先頭に格納されているパケットの再生時刻が格納される。
【０１７６】
次に、図１８のフローチャートを参照して、サーバ１２による、再送の他の処理を説明する。ステップＳ１７１において、通信部３９は、通信網１３を介して、クライアント１４から送信されてきたパケットを受信する。通信部３９は、受信したパケットが再送要求であるNACKパケットである場合、受信したパケットをNACK処理部７６に供給する。
【０１７７】
ステップＳ１７２において、NACK処理部７６は、再送要求を受信したか否かを判定する。例えば、ステップＳ１７２において、NACK処理部７６は、通信部３９からNACKパケットが供給されたか否かにより、再送要求を受信したか否かを判定する。
【０１７８】
ステップＳ１７２において、再送要求を受信していないと判定された場合、ステップＳ１７１に戻り、再送要求を受信するまで、パケットの受信および判定の処理を繰り返す。
【０１７９】
ステップＳ１７２において、例えば、供給されたパケットがNACKパケットであり、再送要求を受信したと判定された場合、ステップＳ１７３に進み、NACK処理部７６は、送信履歴保持部１２１から、再送要求されたパケットの送信時刻を読み出す。例えば、ステップＳ１７３において、NACK処理部７６は、NACKパケットから要求シーケンス番号を抽出して、要求シーケンス番号に対応して記憶されているパケットの送信時刻を送信履歴保持部１２１から読み出すことにより、送信履歴保持部１２１から、再送要求されたパケットの送信時刻を読み出す。
【０１８０】
ステップＳ１７４において、NACK処理部７６は、NACKパケットから先頭シーケンス番号を抽出して、先頭シーケンス番号に対応して記憶されているパケットの送信時刻を送信履歴保持部１２１から読み出すことにより、送信履歴保持部１２１から、クライアント１４のバッファ９３の先頭に格納されているの送信時刻を読み出す。
【０１８１】
ステップＳ１７５において、NACK処理部７６は、再送が間に合うか否かを判定する。
【０１８２】
例えば、ステップＳ１７５において、NACK処理部７６は、NACKパケットから先頭シーケンスの再生時刻を抽出することにより、クライアント１４のバッファ９３の先頭に格納されているパケットの再生時刻を取得する。そして、NACK処理部７６は、片道遅延保持部７５から、片道遅延保持部７５に格納されている片道遅延時間を取得して、現在時刻に取得した片道遅延時間を加算することにより、クライアント１４に再送パケットが到達する到達時刻を計算する。
【０１８３】
さらに、NACK処理部７６は、バッファ９３の先頭に格納されているパケットの送信時刻から、再送要求されたパケットの送信時刻を引き算し、その結果に、クライアント１４のバッファ９３の先頭に格納されているパケットの再生時刻を加算した値を、再送要求されたパケットの再生予定時刻とする。
【０１８４】
NACK処理部７６は、到達時刻とパケットの再生予定時刻とを比較する。
【０１８５】
到達時刻が、パケットの再生予定時刻以前であれば（到達時刻が、パケットの再生予定時刻以下であれれば）、NACK処理部７６は、再送が間に合うと判定する。
【０１８６】
ステップＳ１７５において、再送が間に合うと判定された場合、ステップＳ１７６に進み、NACK処理部７６は、ステップＳ１０４の処理と同様の処理で、該当するシーケンス番号のパケットを通信部３９に送信させて、ステップＳ１７１に戻り、再送の処理を繰り返す。
【０１８７】
ステップＳ１７５において、再送が間に合わないと判定された場合、再送パケットを送信しても受信側において再生に使用することができないので、ステップＳ１７６をスキップして、再送パケットを送信しないで、ステップＳ１７１に戻り、再送の処理を繰り返す。
【０１８８】
このように、クライアント１４が、クライアント１４のバッファ９３の先頭に格納されているパケットの再生時刻およびシーケンス番号をサーバ１２に送信して、サーバ１２が、送信したパケットの送信時刻およびシーケンス番号を対応させて記憶するようにした場合、サーバ１２は、再送パケットの再送が間に合うか否かを判定することができる。
【０１８９】
この場合においても、クライアント１４から再送が要求された場合、サーバ１２は、再送が間に合うとき、すなわち、再送パケットに格納された画像データがクライアント１４において再生に使用できるとき、再送パケットをクライアント１４に送信し、再送が間に合わないとき、すなわち、再送パケットに格納された画像データがクライアント１４において再生に使用できないとき、再送パケットをクライアント１４に送信しない。
【０１９０】
このように、パケットを再送するようにした場合には、エラーを訂正することができる。また、正常に受信できなかった送信パケットに対応する再送パケットが送信装置から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得し、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットを送信装置に送信し、受信装置から送信されてきた、再送要求パケットを受信し、自分が再送パケットを再送してから受信装置が再送パケットを受信するまでの遅延時間を算出し、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できるか否かを判定し、ストリーミングデータを再生する時刻までに、受信装置が再送パケットを受信できると判定された場合、要求された再送パケットを再送するようにした場合には、送信側で再送が間に合うかどうかを判断して、無駄な再送を防止することができる。
【０１９１】
さらに、正常に受信できなかった送信パケットに対応する再送パケットが相手から再送された場合、再送パケットが再送されてから、再送パケットに格納されているストリーミングデータを再生するまでの時間を算出するための時間算出情報を取得し、再送パケットの再送を要求し、時間算出情報が格納されている再送要求パケットを相手に送信するようにした場合には、相手側で再送が間に合うかどうかを判断して、無駄な再送を防止することができる。
【０１９２】
相手が正常に受信できなかった送信パケットに対応する再送パケットの再送を要求するとともに、自分が再送パケットを再送してから、再送パケットに格納されているストリーミングデータを相手が再生するまでの時間を算出するための時間算出情報が格納されている再送要求パケットを受信し、自分が再送パケットを再送してから相手が再送パケットを受信するまでの遅延時間を算出し、受信された再送要求パケットに格納されている時間算出情報および遅延時間を基に、要求された再送パケットを再送した場合、再送パケットに格納されているストリーミングデータを再生する時刻までに、相手が再送パケットを受信できるか否かを判定し、ストリーミングデータを再生する時刻までに、相手が再送パケットを受信できると判定された場合、要求された再送パケットを再送するようにした場合には、自分で再送が間に合うかどうかを判断して、無駄な再送を防止することができる。
【０１９３】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０１９４】
この記録媒体は、図２に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク５１（フレキシブルディスクを含む）、光ディスク５２（CD-ROM(Compact Disc-Read Only Memory)、ＤＶＤ(Digital Versatile Disc)を含む）、光磁気ディスク５３（ＭＤ(Mini-Disc)（商標）を含む）、若しくは半導体メモリ５４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM３２や、記憶部３８に含まれるハードディスクなどで構成される。
【０１９５】
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
【０１９６】
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１９７】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０１９８】
【図１】本発明に係る通信システムの一実施の形態を示す図である。
【図２】サーバの構成の例を示すブロック図である。
【図３】サーバの機能の構成を示すブロック図である。
【図４】クライアントの機能の構成を示すブロック図である。
【図５】送信の処理を説明するフローチャートである。
【図６】RTPパケットを説明する図である。
【図７】片道遅延時間の計測の処理を説明するフローチャートである。
【図８】片道遅延計測パケットを説明する図である。
【図９】片道遅延計測パケットの返信の処理を説明するフローチャートである。
【図１０】再送要求の処理を説明するフローチャートである。
【図１１】NACKパケットを説明する図である。
【図１２】画像データの再生時刻の計算を説明する図である。
【図１３】再送の処理を説明するフローチャートである。
【図１４】サーバ１２の他の構成を示すブロック図である。
【図１５】送信の他の処理を説明するフローチャートである。
【図１６】再送要求の他の処理を説明するフローチャートである。
【図１７】NACKパケットを説明する図である。
【図１８】再送の他の処理を説明するフローチャートである。
【符号の説明】
【０１９９】
１２  サーバ，  １３  通信網，  １４  クライアント，  ３１  ＣＰＵ，  ３２  ＲＯＭ，  ３３  ＲＡＭ，  ３８  記録部，  ５１  磁気ディスク，  ５２  光ディスク，  ５３  光磁気ディスク，  ５４  半導体メモリ，  ７１  エンコーダ，  ７２  パケタイザ，  ７３  バッファ，  ７４  片道遅延計算部，  ７５  片道遅延保持部，  ７６  NACK処理部，  ９１  通信部，  ９２  RTP処理部，  ９３  バッファ，  ９４  デコーダ，  ９５  NACK処理部，  ９６  片道遅延処理部
【図１】
2005136547.tif 000003
【図２】
2005136547.tif 000004
【図３】
2005136547.tif 000005
【図４】
2005136547.tif 000006
【図５】
2005136547.tif 000007
【図６】
2005136547.tif 000008
【図７】
2005136547.tif 000009
【図８】
2005136547.tif 000010
【図９】
2005136547.tif 000011
【図１０】
2005136547.tif 000012
【図１１】
2005136547.tif 000013
【図１２】
2005136547.tif 000014
【図１３】
2005136547.tif 000015
【図１４】
2005136547.tif 000016
【図１５】
2005136547.tif 000017
【図１６】
2005136547.tif 000018
【図１７】
2005136547.tif 000019
【図１８】
2005136547.tif 000020