(57)【要約】【課題】より効率よくデータを受信する。【解決手段】  リオーダ判定部２０４は、所定の期間に、予め定められた回数以上のリオーダが発生したか否かを判定する。再送モード記憶部２０６は、所定の期間に、予め定められた回数以上のリオーダが発生したと判定された場合、再送モードに同期モードを設定し、所定の期間に、予め定められた回数以上のリオーダが発生していないと判定された場合、再送モードに非同期モードを設定する。NACK処理部２０７は、再送モードに同期モードが設定されている場合、所定の時間間隔で再送要求信号を生成し、再送モードに非同期モードが設定されている場合、パケットロスが発生したとき、直ちに、再送要求信号を生成する。本発明は、遠隔テレビ会議システムに適用できる。【選択図】図７
2006054721.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）３５５０で規定されているプロトコルであるRTP（Real-time Transport Protocol）がある。
【０００９】
RTPに基づくデータ転送においては、生成された時刻を示すタイムスタンプがパケットに付加され、タイムスタンプの参照により送信側と受信側の時間的関係が把握されるので、受信側において、パケット伝送の遅延ゆらぎ（ジッタ−）などの影響が排除され、同期した再生が可能になる。
【００１０】
しかし、RTPにおいて、実時間のデータの伝送は保証されない。すなわち、パケット配信の優先度や設定、管理などは、RTPによって提供されるトランスポートサービスの範疇ではないため、他の方式のパケットと同様、ネットワーク上での遅延やパケットロスが生じる可能性がある。
【００１１】
遅延やパケットロスが生じても、受信側は、再生時刻までに受信されたパケットだけを利用してデータを再生することができる。すなわち、受信装置は、データに多少の損失や誤りが発生しても、品質を落として再生するか、またはデータの損失や誤りを訂正して再生する。
【００１２】
この場合、再生に間に合わず遅延して配送されたパケットやエラーの発生したパケットは、受信側でそのまま破棄される。つまり、高品質なデータ配信処理を行おうとしても、パケットロスやエラーが発生したときは、受信側の再生の品質は保証されない。
【００１３】
このようなRTPに従ったデータ伝送における問題を解決する案として、データ転送の信頼性のより高い転送プロトコルであるTCP（Transmission Control Protocol）に従ってパケットの再送要求およびパケットの再送を行う方法が考えられる。
【００１４】
しかしながら、TCPにおいて、パケットロスが生じた場合、パケットが再送されるので、エラーには強いが、受信側において、再送されたパケットの受信が再生時刻に間に合わない可能性があり、リアルタイム通信には不向きである。
【００１５】
また、エラーやパケットロスが生じた場合に、誤り訂正を行うFEC（Forward Error Correction）方式が提案されている。このFEC方式においては、FECデータを冗長データとして送信し、エラーやパケットロスが発生した場合に、データの受信側において、FECデータを基に、正常に受信されなかったRTPパケットを復元する。
【００１６】
しかしながら、FEC方式においては、冗長データを付加してデータの送信を行うため、通信速度が低下してしまうという問題があった。また、通信網の状況に合わせて、付加するFECデータの量を決定することは困難であり、その処理に時間がかかってしまうという問題があった。
【００１７】
したがって、送信と受信の遅延が少ないARQ（Automatic Repeat Request）などの技術が必要とされる。このARQ方式においては、RTPパケットに含まれるシーケンス番号を基に、エラーやパケットロスを検出し、受信側（受信装置）は、送信側（送信装置）に対して、正常に受信できなかったRTPパケットの再送を要求する。
【００１８】
また、ARQ方式で通信する受信装置として、後述する往復遅延時間（RTT（Round Trip Time））を基に、再送されるRTPパケットの受信が再生処理に間に合わないと判定されたときは、送信装置に再送を要求しないものもある（例えば、特許文献１参照）。
【００１９】
【特許文献１】特開２００３−１６９０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかしながら、近年、通信網におけるルータの技術としてディフサーブ（Diffserv（Differentiated Services））方式など、ルータにおいて単一のバッファを有さないサービスが行われており、ディフサーブ方式によりストリーミングデータを伝送する場合、またはATM（Asynchronous Transmission Mode）方式により、ストリーミングデータをカットスルー転送する場合など、伝送するパケットの順番が入れ替る、リオーダが発生する可能性が高い。
【００２１】
ここで、図１および図２を参照してリオーダについて説明する。なお、図２において、図１における場合と対応する部分については、同一の符号を付してあり、繰り返しになるので、その説明は、適宜、省略する。
【００２２】
図１は、ルータの構成を示すブロック図である。
【００２３】
帯域測定部２１は、通信網を介して送信されてきたデータを“Hi”または“Low”にマーク付けする。例えば、帯域測定部２１は、サーバＡから送信されてきたデータを基に、通信網における伝送速度（帯域）を算出し、サーバＡから送信されてきたデータのうち、帯域が5Mbpsを超えない分のデータを“Hi”にマーク付けし、“Hi”にマーク付けしたデータをバッファ２２−１に供給する。一方、帯域測定部２１は、サーバＡから送信されてきたデータのうち、帯域が5Mbpsを超えるデータを“Low”にマーク付けし、“Low”にマーク付けしたデータをバッファ２２−２に供給する。
【００２４】
バッファ２２−１は、帯域測定部２１から供給された、“Hi”にマーク付けされたデータを一時的に記憶する。また、バッファ２２−２は、帯域測定部２１から供給された、“Low”にマーク付けされたデータを一時的に記憶する。ここで、“Hi”にマーク付けされたデータは、必ずあて先（例えば、クライアントＢ）に送信され、“Low”にマーク付けされたデータは、バッファ２２−１にデータが記憶されていない場合に、送信される。
【００２５】
すなわち、送信部２３は、バッファ２２−１に記憶されている、“Hi”にマーク付けされたデータを取得し、取得したデータを、通信網を介して、クライアントＢあてに送信する。また、送信部２３は、バッファ２２−１にデータが記憶されていない場合、バッファ２２−２に記憶されている、“Low”にマーク付けされたデータを取得し、取得したデータを、通信網を介して、クライアントＢあてに送信する。
【００２６】
したがって、例えば、図２に示すように、サーバＡが、ルータ１１を介して、クライアントＢあてにパケット４１−１乃至パケット４１−５を送信した場合、帯域測定部２１は、受信したパケット４１−１乃至パケット４１−５を、“Hi”または“Low”にマーク付けする。
【００２７】
この場合、例えば、パケット４１−１乃至パケット４１−４を基に算出した帯域が5Mbpsを超え、パケット４１−１乃至パケット４１−３およびパケット４１−５を基に算出した帯域が5Mbpsを超えないとき、帯域測定部２１は、パケット４１−１乃至パケット４１−３およびパケット４１−５のそれぞれを“Hi”にマーク付けし、バッファ２２−１に供給する。そして、バッファ２２−１は、帯域測定部２１から供給されたパケット４１−１乃至パケット４１−３およびパケット４１−５のそれぞれを、一時的に記憶する。
【００２８】
一方、帯域測定部２１は、パケット４１−４を“Low”にマーク付けし、バッファ２２−２に供給する。そして、バッファ２２−２は、帯域測定部２１から供給されたパケット４１−４を一時的に記憶する。
【００２９】
さらに、送信部２３は、バッファ２２−１からパケット４１−１乃至パケット４１−３およびパケット４１−５を取得し、取得したパケット４１−１乃至パケット４１−３およびパケット４１−５を、通信網を介して、クライアントＢあてに送信する。
【００３０】
送信部２３が、パケット４１−１乃至パケット４１−３およびパケット４１−５を送信すると、バッファ２２−１には、データ（パケット）が記憶されていないので、送信部２３は、バッファ２２−２からパケット４１−４を取得し、取得したパケット４１−４を、通信網を介して、クライアントＢあてに送信する。
【００３１】
したがって、この場合、サーバＡにおいて、パケット４１−１乃至パケット４１−５の順番で送信されたパケット４１−１乃至パケット４１−５のそれぞれは、クライアントＢにおいて、パケット４１−１乃至パケット４１−３、パケット４１−５、およびパケット４１−４の順番で受信されることになり、パケットのリオーダが発生する。
【００３２】
このように、ARQ方式において、リオーダが発生した場合、例えば、図３に示すように、受信装置（クライアント）は、パケットロスが発生したと判定し、送信装置（サーバ）に対して、パケットの再送を要求する。
【００３３】
図３において、横方向は、時間を示す。サーバは、ストリーミングデータが格納された送信パケット６１−１乃至送信パケット６１−５を、通信網を介して、クライアントあてに送信する。
【００３４】
このとき、例えば、ルータ（図示せず）においてリオーダが発生し、サーバが、通信網を介して、クライアントあてに送信した送信パケット６１−１乃至送信パケット６１−５が、クライアントにおいて、送信パケット６１−１乃至送信パケット６１−３、送信パケット６１−５、および送信パケット６１−４の順番で受信されたとする。
【００３５】
この場合、クライアントは、時刻ｔ６１において、サーバから送信されてきた送信パケット６１−５を受信する。そして、クライアントは、送信パケット６１−４を受信していないので、パケットロスが発生したと判定し、ロスしたと判定された送信パケット６１−４に対応する再送パケット６２の送信を要求する旨の再送要求信号を、通信網を介して、サーバあてに送信する。
【００３６】
すなわち、再送パケット６２には、送信パケット６１−４に格納された画像データと同一の画像データが格納されており、サーバは、再送パケット６２を、送信パケット６１−４に対応する再送パケットとして、通信網を介して、クライアントあてに送信する。
【００３７】
時刻ｔ６２において、サーバは、クライアントから送信されてきた再送要求信号を受信する。そして、サーバは、送信（再送）が要求されたパケット６２を、再送パケットとして、通信網を介して、クライアントあてに送信する。
【００３８】
時刻ｔ６３において、クライアントは、サーバから送信されてきた送信パケット６１−４を受信する。また、時刻ｔ６４において、クライアントは、サーバから送信されてきた再送パケット６２を受信する。
【００３９】
このように、ARQ方式においては、パケットのリオーダが発生した場合、パケットロスが発生していないにも関わらず、受信装置（クライアント）は、送信装置（サーバ）に対して、再送要求信号を送信してしまうという問題があった。したがって、効率よくデータを送受信することができなかった。
【００４０】
本発明は、このような状況に鑑みてなされたものであり、無駄な再送要求信号の送信を防止することができるようにするものである。
【課題を解決するための手段】
【００４１】
本発明の受信装置は、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた第１の期間内に所定の回数以上発生したか否かを判定する判定手段と、パケットのリオーダが、第１の期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号を生成し、パケットのリオーダが、第１の期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成する生成手段と、生成した再送要求信号を、通信網を介して、相手に送信する送信手段とを備えることを特徴とする。
【００４２】
受信装置は、再送要求信号を送信した時刻を含む、再送要求信号の送信の履歴を示す情報を記憶する記憶手段と、再送要求信号を送信してから、再送されてくるパケットを受信するまでに必要とされる遅延時間を算出する算出手段とをさらに設け、判定手段は、再送要求信号の送信の履歴を示す情報および遅延時間を基に、受信したパケットが、再送されたパケットであるか否かを判定し、さらに、受信したパケットが、再送されたパケットであるか否かの判定の結果を用いて、パケットのリオーダが、第１の期間内に所定の回数以上発生したか否かを判定するようにすることができる。
【００４３】
生成手段は、パケットのリオーダが、第１の期間内に所定の回数以上発生したと判定された場合、正常に受信されなかったパケットのうち、再送要求信号を１度も送信していないパケットの再送要求信号と、再送要求信号を送信してから、所定の第２の期間が経過しても再送されたパケットを受信していないパケットの再送要求信号とを、所定の時間間隔で生成し、パケットのリオーダが、第１の期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成するようにすることができる。
【００４４】
本発明の受信方法は、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定する判定ステップと、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号の生成を制御し、パケットのリオーダが、予め定められた期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号の生成を制御する生成制御ステップと、生成された再送要求信号の相手への送信を制御する送信制御ステップとを含むことを特徴とする。
【００４５】
本発明の記録媒体のプログラムは、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定する判定ステップと、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号の生成を制御し、パケットのリオーダが、予め定められた期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号の生成を制御する生成制御ステップと、生成された再送要求信号の相手への送信を制御する送信制御ステップとを含むことを特徴とする。
【００４６】
本発明のプログラムは、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定する判定ステップと、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号の生成を制御し、パケットのリオーダが、予め定められた期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号の生成を制御する生成制御ステップと、生成された再送要求信号の相手への送信を制御する送信制御ステップとをコンピュータに実行させることを特徴とする。
【００４７】
本発明の受信装置は、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生したか否かを判定する判定手段と、パケットのリオーダが、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号を生成し、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成する生成手段と、生成した再送要求信号を、通信網を介して、相手に送信する送信手段とを備えることを特徴とする。
【００４８】
本発明の通信システムは、第１の情報処理装置は、ストリーミングデータが格納されているパケットを、第２の情報処理装置あてに送信する送信手段を備え、第２の情報処理装置は、第１の情報処理装置から送信されてきたパケットを受信する受信手段と、受信したパケットを基に、受信したパケットの順番が、第１の情報処理装置から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定する判定手段と、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号を生成し、パケットのリオーダが、予め定められた期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成する生成手段と、生成した再送要求信号を、第１の情報処理装置あてに送信する送信手段とを備え、第１の情報処理装置は、第２の情報処理装置から送信されてきた再送要求信号を受信する受信手段をさらに備え、第１の情報処理装置における送信手段は、さらに、再送が要求されたパケットを、再送パケットとして第２の情報処理装置あてに送信することを特徴とする。
【００４９】
第１の情報処理装置は、パケットが、再送されるパケットであるか否かを示す情報を含むパケットを生成する生成手段をさらに設け、第２の情報処理装置における判定手段は、パケットに含まれる、パケットが、再送されるパケットであるか否かを示す情報を基に、受信したパケットが、再送されたパケットであるか否かを判定し、さらに、受信したパケットが、再送されたパケットであるか否かの判定の結果を用いて、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定するようにすることができる。
【００５０】
本発明の受信装置および方法、記録媒体、並びにプログラムにおいては、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた第１の期間内に所定の回数以上発生したか否かが判定され、パケットのリオーダが、第１の期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号が生成され、パケットのリオーダが、第１の期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号が生成される。そして、生成された再送要求信号が、通信網を介して、相手に送信される。
【００５１】
本発明の受信装置においては、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生したか否かが判定され、パケットのリオーダが、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号が生成され、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号が生成される。そして、生成された再送要求信号が、通信網を介して、相手に送信される。
【００５２】
本発明の通信システムにおいては、第１の情報処理装置によって、ストリーミングデータが格納されているパケットが、第２の情報処理装置あてに送信され、第２の情報処理装置によって、第１の情報処理装置から送信されてきたパケットが受信され、受信されたパケットを基に、受信されたパケットの順番が、第１の情報処理装置から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かが判定され、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号が生成され、パケットのリオーダが、予め定められた期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号が生成され、生成された再送要求信号が、第１の情報処理装置あてに送信される。そして、第１の情報処理装置によって、第２の情報処理装置から送信されてきた再送要求信号が受信され、さらに、第１の情報処理装置によって、再送が要求されたパケットが、再送パケットとして第２の情報処理装置あてに送信される。
【００５３】
ネットワークとは、少なくとも２つの装置が接続され、ある装置から、他の装置に対して、情報の伝達をできるようにした仕組みをいう。ネットワークを介して通信する装置は、独立した装置どうしであっても良いし、１つの装置を構成している内部ブロックどうしであっても良い。
【００５４】
また、通信とは、無線通信および有線通信は勿論、無線通信と有線通信とが混在した通信、即ち、ある区間では無線通信が行われ、他の区間では有線通信が行われるようなものであっても良い。さらに、ある装置から他の装置への通信が有線通信で行われ、他の装置からある装置への通信が無線通信で行われるようなものであっても良い。
【００５５】
受信装置は、独立した装置であっても良いし、受信装置の受信処理を行うブロックであっても良い。
【発明の効果】
【００５６】
本発明によれば、より効率よくデータを送受信することができる。
【発明を実施するための最良の形態】
【００５７】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００５８】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００５９】
請求項１に記載の受信装置（例えば、図７のクライアント８４）は、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた第１の期間内に所定の回数以上発生したか否かを判定する判定手段（例えば、図７のリオーダ判定部２０４）と、パケットのリオーダが、第１の期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号を生成し、パケットのリオーダが、第１の期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成する生成手段（例えば、図７のNACK処理部２０７）と、生成した再送要求信号を、通信網を介して、相手に送信する送信手段（例えば、図７の送信部２３１）とを備えることを特徴とする。
【００６０】
請求項２に記載の受信装置（例えば、図７のクライアント８４）は、再送要求信号を送信した時刻を含む、再送要求信号の送信の履歴を示す情報を記憶する記憶手段（例えば、図７の送信履歴保持部２０９）と、再送要求信号を送信してから、再送されてくるパケットを受信するまでに必要とされる遅延時間を算出する算出手段（例えば、図７のRTT計測部２１０）とをさらに備え、判定手段（例えば、図７のリオーダ判定部２０４）は、再送要求信号の送信の履歴を示す情報および遅延時間を基に、受信したパケットが、再送されたパケットであるか否かを判定し、さらに、受信したパケットが、再送されたパケットであるか否かの判定の結果を用いて、パケットのリオーダが、第１の期間内に所定の回数以上発生したか否かを判定することを特徴とする。
【００６１】
請求項３に記載の受信装置（例えば、図７のクライアント８４）は、生成手段（例えば、図７のNACK処理部２０７）は、パケットのリオーダが、第１の期間内に所定の回数以上発生したと判定された場合、正常に受信されなかったパケットのうち、再送要求信号を１度も送信していないパケットの再送要求信号と、再送要求信号を送信してから、所定の第２の期間が経過しても再送されたパケットを受信していないパケットの再送要求信号とを、所定の時間間隔で生成し、パケットのリオーダが、第１の期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成することを特徴とする。
【００６２】
請求項４に記載の受信方法は、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定する判定ステップ（例えば、図１５のステップＳ１０４の処理）と、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号の生成を制御し、パケットのリオーダが、予め定められた期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号の生成を制御する生成制御ステップ（例えば、図１８ステップＳ１６６の処理および図２０のステップＳ１９５の処理）と、生成された再送要求信号の相手への送信を制御する送信制御ステップ（例えば、図１８ステップＳ１６７の処理および図２０のステップＳ１９６の処理）とを含むことを特徴とする。
【００６３】
なお、請求項５に記載の記録媒体および請求項６に記載のプログラムも、上述した請求項４に記載の受信方法と基本的に同様の処理であるため、繰り返しになるのでその説明は省略する。
【００６４】
請求項７に記載の受信装置（例えば、図２３のクライアント３５１）は、受信したパケットを基に、受信したパケットの順番が、相手から送信されたパケットの順番と異なる、パケットのリオーダが、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生したか否かを判定する判定手段（例えば、図２３のリオーダ判定部３６４）と、パケットのリオーダが、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号を生成し、受信した予め定められた数のパケットにおいて、所定の回数以上のリオーダが発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成する生成手段（例えば、図２３のNACK処理部３６７）と、生成した再送要求信号を、通信網を介して、相手に送信する送信手段（例えば、図２３の送信部３８１）とを備えることを特徴とする。
【００６５】
請求項８に記載の通信システム（例えば、図４のサーバ８２およびクライアント８４からなる通信システム）は、第１の情報処理装置（例えば、図４のサーバ８２）は、ストリーミングデータが格納されているパケットを、第２の情報処理装置（例えば、図４のクライアント８４）あてに送信する送信手段（例えば、図６の送信部１８１）を備え、第２の情報処理装置は、第１の情報処理装置から送信されてきたパケットを受信する受信手段（例えば、図７の受信部２３２）と、受信したパケットを基に、受信したパケットの順番が、第１の情報処理装置から送信されたパケットの順番と異なる、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定する判定手段（例えば、図７のリオーダ判定部２０４）と、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したと判定された場合、所定の時間間隔で、パケットの再送を要求する旨の再送要求信号を生成し、パケットのリオーダが、予め定められた期間内に所定の回数以上発生していないと判定された場合、パケットが正常に受信されなかったとき、直ちに、そのパケットの再送を要求する旨の再送要求信号を生成する生成手段（例えば、図７のNACK処理部２０７）と、生成した再送要求信号を、第１の情報処理装置あてに送信する送信手段（例えば、図７の送信部２３１）とを備え、第１の情報処理装置は、第２の情報処理装置から送信されてきた再送要求信号を受信する受信手段（例えば、図６の受信部１８２）をさらに備え、第１の情報処理装置における送信手段は、さらに、再送が要求されたパケットを、再送パケットとして第２の情報処理装置あてに送信することを特徴とする。
【００６６】
請求項９に記載の通信システム（例えば、図４のサーバ８２およびクライアント８４からなる通信システム）は、第１の情報処理装置（例えば、図２２のサーバ３０１）は、パケットが、再送されるパケットであるか否かを示す情報を含むパケットを生成する生成手段（例えば、図２２のパケタイザ３１２）をさらに備え、第２の情報処理装置（例えば、図２３のクライアント３５１）における判定手段（例えば、図２３のリオーダ判定部３６４）は、パケットに含まれる、パケットが、再送されるパケットであるか否かを示す情報を基に、受信したパケットが、再送されたパケットであるか否かを判定し、さらに、受信したパケットが、再送されたパケットであるか否かの判定の結果を用いて、パケットのリオーダが、予め定められた期間内に所定の回数以上発生したか否かを判定することを特徴とする。
【００６７】
本発明は、例えば、インターネット電話、遠隔テレビ会議システム、ライブ映像ストリーミング配信システム、またはテレビ電話などのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
【００６８】
まず、本発明を適用した第１の実施の形態について説明する。
【００６９】
図４は、本発明を適用したストリーミング配信システムの一実施例の形態を示す図である。このストリーミング配信システムにおいては、インターネットなどの通信網８３に、サーバ８２およびクライアント８４が接続されている。
【００７０】
ビデオカメラ８１は、画像を撮像して、撮像した画像に対応する画像データをサーバ８２に供給する。例えば、ビデオカメラ８１は、動画像を撮像して、動画像に対応する画像データをサーバ８２に供給する。
【００７１】
画像データは、ストリーミングデータの一例である。ストリーミングデータは、音声のデータ、またはリアルタイム制御データなど、時間の経過に対応して順次送信または受信が要求されるデータであればよい。
【００７２】
サーバ８２は、クライアント８４からストリーミングデータの配信が要求された場合、ビデオカメラ８１から供給された画像データをパケットに格納して、パケットを、通信網８３を介して、クライアント８４あてに送信する。
【００７３】
通信網８３は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、サーバ８２から送信されたパケットをクライアント８４まで伝送する。また、通信網８３は、クライアント８４から送信された再送要求信号をサーバ８２まで伝送する。
【００７４】
クライアント８４は、サーバ８２から送信されてきたパケットを受信する。クライアント８４は、受信したパケットから画像データを抽出し、抽出した画像データを出力する。
【００７５】
クライアント８４は、パケットのリオーダが発生した回数を基に、再送要求信号の送信の時間間隔を決定する、再送モードの設定を行う。
【００７６】
なお、再送モードの詳細は後述するが、クライアント８４は、所定の期間内に、予め定められた回数以上のリオーダが発生した場合、再送モードに同期モードを設定し、所定の期間内に、予め定められた回数以上のリオーダが発生しなかった場合、再送モードに非同期モードを設定する。
【００７７】
クライアント８４は、ストリーミングデータが格納されているパケットを正常に受信できなかった場合、再送モードに同期モードが設定されているときには、予め定められた所定の時間間隔で、パケットの再送を要求する旨の再送要求信号をサーバ８２あてに送信する。
【００７８】
また、クライアント８４は、ストリーミングデータが格納されているパケットを正常に受信できなかった場合、再送モードに非同期モードが設定されているときには、直ちに再送要求信号をサーバ８２あてに送信する。
【００７９】
サーバ８２は、クライアント８４から送信されてきた、再送要求信号を受信する。サーバ８２は、再送要求信号を受信した場合、再送が要求された画像データが格納されているパケットを、通信網８３を介してクライアント８４あてに送信する。そして、クライアント８４は、サーバ８２から送信されてきたパケットを受信する。
【００８０】
図５は、サーバ８２の構成の例を示すブロック図である。CPU（Central Processing Unit）１０１は、ROM（Read Only Memory）１０２、または記録部１０８に記録されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）１０３には、CPU１０１が実行するプログラムやデータなどが適宜記憶される。これらのCPU１０１、ROM１０２、およびRAM１０３は、バス１０４により相互に接続されている。
【００８１】
CPU１０１にはまた、バス１０４を介して入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、キーボード、マウス、スイッチなどよりなる入力部１０６、ディスプレイ、スピーカ、ランプなどよりなる出力部１０７が接続されている。CPU１０１は、入力部１０６から入力される指令に対応して各種の処理を実行する。
【００８２】
入出力インタフェース１０５に接続されている記録部１０８は、例えばハードディスクなどで構成され、CPU１０１が実行するプログラムや各種のデータを記録する。通信部１０９は、インターネット、その他のネットワークなどの通信網８３を介して、クライアント８４などの外部の装置と通信する。
【００８３】
また、通信部１０９は、通信網８３を介してプログラムを取得し、記録部１０８に記録させるようにしてもよい。
【００８４】
入出力インタフェース１０５に接続されているドライブ１１０は、磁気ディスク１３１、光ディスク１３２、光磁気ディスク１３３、或いは半導体メモリ１３４などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部１０８に転送され、記録される。
【００８５】
なお、クライアント８４は、サーバ８２と同様に構成されるので、その説明は省略する。
【００８６】
図６は、サーバ８２の機能の構成を示すブロック図である。
【００８７】
サーバ８２は、通信部１０９、エンコーダ１６１、パケタイザ１６２、再送用バッファ１６３、NACK処理部１６４、およびRTT計測部１６５を含むように構成される。
【００８８】
エンコーダ１６１は、ビデオカメラ８１から供給されたストリーミングデータの一例である画像データをエンコード（符号化）し、エンコードした画像データをパケタイザ１６２に供給する。
【００８９】
パケタイザ１６２は、エンコーダ１６１から供給された画像データをRTP方式のパケットに格納することによって、RTPパケットを生成する。パケタイザ１６２は、生成したRTPパケットを通信部１０９および再送用バッファ１６３に供給する。
【００９０】
通信部１０９は、各種のデータを送信する送信部１８１および各種のデータを受信する受信部１８２を備えており、通信網８３を介してデータの送受信を行う。
【００９１】
通信部１０９の送信部１８１は、パケタイザ１６２またはNACK処理部１６４から供給されたRTPパケットを、通信網８３を介して、クライアント８４あてに送信する。また、通信部１０９の送信部１８１は、RTT計測部１６５から供給されたRTT計測パケットを、通信網８３を介して、クライアント８４あてに送信する。なお、RTT計測パケットの詳細は後述するが、RTT計測パケットとは、通信網８３における往復遅延時間を算出するためのパケットである。ここで、往復遅延時間とは、クライアント８４が、再送要求信号を、通信網８３を介してサーバ８２あてに送信してから、サーバ８２から送信されてくるRTPパケットを受信するまでに要する時間をいう。
【００９２】
通信部１０９の受信部１８２は、クライアント８４から送信されてきた再送要求信号を受信し、受信した再送要求信号をNACK処理部１６４に供給する。また、通信部１０９の受信部１８２は、クライアント８４から送信されてきたRTT計測パケットを受信し、受信したRTT計測パケットをRTT計測部１６５に供給する。
【００９３】
再送用バッファ１６３は、パケタイザ１６２から供給されたRTPパケットを、クライアント８４に再送する再送パケットとして、一時的に記憶する。再送用バッファ１６３は、記憶しているRTPパケットをNACK処理部１６４に供給する。
【００９４】
NACK処理部１６４は、通信部１０９から供給された再送要求信号を基に、再送が要求された画像データが格納されているRTPパケットを再送用バッファ１６３から取得する。NACK処理部１６４は、再送用バッファ１６３から取得したRTPパケットを通信部１０９に供給する。
【００９５】
RTT計測部１６５は、通信部１０９が受信し、通信部１０９から供給されたRTT計測パケットを取得する。RTT計測部１６５は、取得したRTT計測パケットのデータ部と同一のデータを含むRTT計測パケットを生成し、生成したRTT計測パケットを通信部１０９に供給する。
【００９６】
図７は、クライアント８４の機能の構成を示すブロック図である。
【００９７】
クライアント８４は、通信部２０１、RTP処理部２０２、デコーダ２０３、リオーダ判定部２０４、リオーダデータベース２０５、再送モード記憶部２０６、NACK処理部２０７、NACKデータベース２０８、送信履歴保持部２０９、RTT計測部２１０、およびRTT保持部２１１を含むように構成される。
【００９８】
通信部２０１は、各種のデータを送信する送信部２３１および各種のデータを受信する受信部２３２を備えており、通信網８３を介してデータの送受信を行う。
【００９９】
通信部２０１の送信部２３１は、NACK処理部２０７から供給された再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。また、通信部２０１の送信部２３１は、RTT計測部２１０から供給されたRTT計測パケットを、通信網８３を介して、サーバ８２あてに送信する。
【０１００】
通信部２０１の受信部２３２は、サーバ８２から送信されてきたRTPパケットを受信し、受信したRTPパケットをRTP処理部２０２に供給する。また、通信部２０１の受信部２３２は、サーバ８２から送信されてきたRTT計測パケットを受信し、受信したRTT計測パケットを、RTT計測部２１０に供給する。
【０１０１】
RTP処理部２０２は、通信部２０１から供給されたRTPパケットから画像データを抽出し、抽出した画像データをデコーダ２０３に供給する。また、RTP処理部２０２は、通信部２０１から供給されたRTPパケットからシーケンス番号を抽出し、抽出したシーケンス番号をNACK処理部２０７およびリオーダ判定部２０４に供給する。
【０１０２】
なお、シーケンス番号の詳細は後述するが、シーケンス番号とは、RTPパケットを特定するための番号であり、シーケンス番号は、RTPパケットに格納されている。
【０１０３】
デコーダ２０３は、RTP処理部２０２から供給された画像データを、エンコーダ１６１に対応するデコード（復号）方式によりデコードし、デコードした画像データを出力する。
【０１０４】
リオーダ判定部２０４は、リオーダデータベース２０５を制御し、リオーダデータベース２０５に、RTP処理部２０２から供給されたシーケンス番号を保持させる。また、リオーダ判定部２０４は、再送モード記憶部２０６を制御し、再送モード記憶部２０６に再送モードの設定を行わせる。
【０１０５】
リオーダ判定部２０４は、送信履歴保持部２０９が、RTP処理部２０２から供給されたシーケンス番号を保持しているか否かを判定する。リオーダ判定部２０４は、送信履歴保持部２０９が、RTP処理部２０２から供給されたシーケンス番号を保持していないと判定された場合、リオーダデータベース２０５を制御し、RTP処理部２０２から供給されたシーケンス番号を、リオーダデータベース２０５にRTPパケットを受信した順に（RTP処理部２０２から供給された順に）保持させる。
【０１０６】
一方、リオーダ判定部２０４は、送信履歴保持部２０９が、RTP処理部２０２から供給されたシーケンス番号を保持していると判定された場合、送信履歴保持部２０９に保持されている、再送を要求したRTPパケットのシーケンス番号および再送を要求した時刻、並びにRTT保持部２１１に保持されている往復遅延時間を基に、RTP処理部２０２から供給されたシーケンス番号によって特定されるRTPパケットが、再送されたRTPパケットであるか否かを判定する。
【０１０７】
リオーダ判定部２０４は、RTP処理部２０２から供給されたシーケンス番号によって特定されるRTPパケットが、再送されたRTPパケットであると判定された場合、リオーダデータベース２０５を制御し、RTP処理部２０２から供給されたシーケンス番号を、リオーダデータベース２０５に番号順に保持させる。
【０１０８】
また、リオーダ判定部２０４は、RTP処理部２０２から供給されたシーケンス番号によって特定されるRTPパケットが、再送されたRTPパケットでないと判定された場合、リオーダデータベース２０５を制御し、RTP処理部２０２から供給されたシーケンス番号を、リオーダデータベース２０５にRTPパケットを受信した順に保持させる。
【０１０９】
リオーダ判定部２０４は、リオーダデータベース２０５が保持しているシーケンス番号を基に、所定の期間内に予め定められた回数以上のリオーダが発生したか否かを判定する。
【０１１０】
リオーダ判定部２０４は、所定の期間内に予め定められた回数以上のリオーダが発生したと判定された場合、再送モード記憶部２０６を制御し、再送モードに同期モードを設定させる。
【０１１１】
一方、リオーダ判定部２０４は、所定の期間内に予め定められた回数以上のリオーダが発生していないと判定された場合、再送モード記憶部２０６を制御し、再送モードに非同期モードを設定させる。
【０１１２】
リオーダデータベース２０５は、リオーダ判定部２０４の制御のもと、受信されたRTPパケットのシーケンス番号を所定の期間、一時的に保持する。
【０１１３】
再送モード記憶部２０６は、再送モードを示す再送モードフラグを記憶している。セットされている（例えば、“１”が設定されている）再送モードフラグは、再送モードに同期モードが設定されていることを示し、リセットされている（例えば、“０”が設定されている）再送モードフラグは、再送モードに非同期モードが設定されていることを示す。
【０１１４】
再送モード記憶部２０６は、リオーダ判定部２０４によって、所定の期間内に予め定められた回数以上のリオーダが発生したと判定された場合、リオーダ判定部２０４の制御のもと、記憶している再送モードフラグをセットすることにより、再送モードに同期モードを設定する。
【０１１５】
再送モード記憶部２０６は、リオーダ判定部２０４によって、所定の期間内に予め定められた回数以上のリオーダが発生していないと判定された場合、リオーダ判定部２０４の制御のもと、記憶している再送モードフラグをリセットすることにより、再送モードに非同期モードを設定する。
【０１１６】
NACK処理部２０７は、NACKデータベース２０８が、RTP処理部２０２から供給されたシーケンス番号を保持している場合、NACKデータベース２０８を制御し、RTP処理部２０２から供給されたシーケンス番号を、NACKデータベース２０８から消去させる。
【０１１７】
NACK処理部２０７は、NACKデータベース２０８が、RTP処理部２０２から供給されたシーケンス番号を保持していない場合、シーケンス番号を消去させない。
【０１１８】
NACK処理部２０７は、RTP処理部２０２から供給されたシーケンス番号を基に、パケットロスが発生したか否かを判定する。
【０１１９】
NACK処理部２０７は、パケットロスが発生したと判定された場合、NACKデータベース２０８を制御し、ロスしたRTPパケットのシーケンス番号を、NACKデータベース２０８に保持させる。NACK処理部２０７は、パケットロスが発生していないと判定された場合、シーケンス番号を保持させない。
【０１２０】
NACK処理部２０７は、再送モード記憶部２０６が記憶している再送モードフラグを基に、再送モードに同期モードが設定されているか否かを判定する。
【０１２１】
NACK処理部２０７は、再送モードに同期モードが設定されていると判定された場合、予め定められた時間間隔で、NACKデータベース２０８に保持されているシーケンス番号を基に、再送要求信号を生成する。NACK処理部２０７は、生成した再送要求信号を通信部２０１に供給する。なお、NACKデータベース２０８にシーケンス番号が保持されていない場合、NACK処理部２０７は、予め定められた所定の期間が経過しても再送要求信号を生成しない。
【０１２２】
NACK処理部２０７は、再送モードに同期モードが設定されていないと判定された場合、パケットロスが発生したとき、直ちにNACKデータベース２０８に保持されているシーケンス番号を基に、再送要求信号を生成する。NACK処理部２０７は、生成した再送要求信号を通信部２０１に供給する。なお、パケットロスが発生していないとき、NACK処理部２０７は、再送要求信号を生成しない。
【０１２３】
NACK処理部２０７は、生成した再送要求信号のシーケンス番号および送信時刻を送信履歴保持部２０９に供給する。
【０１２４】
NACKデータベース２０８は、NACK処理部２０７の制御のもと、ロスしたRTPパケットのシーケンス番号を一時的に保持する。また、NACKデータベース２０８は、NACK処理部２０７の制御のもと、保持しているRTPパケットのシーケンス番号を消去する。
【０１２５】
送信履歴保持部２０９は、通信網８３を介して、サーバ８２に送信された再送要求信号の送信の履歴を保持している。すなわち、送信履歴保持部２０９は、NACK処理部２０７から供給された、再送要求信号の送信時刻および再送要求信号に含まれるシーケンス番号を保持する。
【０１２６】
RTT計測部２１０は、通信網８３における往復遅延時間を計測（算出）するためのRTT計測パケットを生成し、生成したRTT計測パケットを通信部２０１に供給する。RTT計測部２１０は、通信部２０１から供給されたRTT計測パケットを基に、通信網８３における往復遅延時間を算出し、算出した往復遅延時間をRTT保持部２１１に供給する。
【０１２７】
RTT保持部２１１は、RTT計測部２１０から供給された往復遅延時間を保持する。
【０１２８】
次に、図８および図９のタイムチャートを参照して、本発明に係るストリーミングデータ配信システムを説明する。
【０１２９】
図８は、再送モードに同期モードが設定されている場合に、クライアント８４が再送要求信号を送信する処理を説明するタイムチャートである。
【０１３０】
図８において、横方向は、時間を示す。また、時刻ｔ２０１から時刻ｔ２０５までの期間Ｔ１−１および時刻ｔ２０５から所定の時刻までの期間Ｔ１−２は、クライアント８４における、予め定められたタイマの期間であり、再送要求信号を送信する時間の間隔を示す。
【０１３１】
サーバ８２は、ストリーミングデータが格納されたRTPパケット２５１−１乃至RTPパケット２５１−７を、通信網８３を介して、クライアント８４あてに送信する。
【０１３２】
クライアント８４は、サーバ８２から送信されてきたRTPパケット２５１−１乃至RTPパケット２５１−３を受信する。また、時刻ｔ２０２において、クライアント８４は、サーバ８２から送信されてきたRTPパケット２５１−５を受信する。すなわち、この場合、クライアント８４は、RTPパケット２５１−４よりも先にRTPパケット２５１−５を受信したので、通信網８３において、パケットのリオーダまたはパケットロスが発生したことが分かる。
【０１３３】
時刻ｔ２０２において、クライアント８４は、RTPパケット２５１−５を受信し、RTPパケット２５１−４を受信していないので、パケットロスが発生したと判定し、ロスしたRTPパケット２５１−４のシーケンス番号をNACKデータベース２０８に保持する。
【０１３４】
時刻ｔ２０３において、クライアント８４は、サーバ８２から送信されてきたRTPパケット２５１−４を受信する。このとき、クライアント８４は、RTPパケット２５１−４を受信したので、NACKデータベース２０８に保持されているRTPパケット２５１−４のシーケンス番号を消去する。
【０１３５】
時刻ｔ２０４において、クライアント８４は、サーバ８２から送信されてきたRTPパケット２５１−７を受信する。このとき、クライアント８４は、RTPパケット２５１−７を受信し、RTPパケット２５１−６を受信していないので、パケットロスが発生したと判定し、ロスしたRTPパケット２５１−６のシーケンス番号をNACKデータベース２０８に保持する。
【０１３６】
時刻ｔ２０５において、クライアント８４は、内蔵しているタイマが終了し、再送要求信号を送信する時刻となったので、再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０１３７】
このとき、クライアント８４は、NACKデータベース２０８がRTPパケット２５１−６のシーケンス番号を保持しているので、RTPパケット２５１−６に格納されているストリーミングデータの再送を要求する旨の再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０１３８】
時刻ｔ２０６において、サーバ８２は、クライアント８４から送信されてきた再送要求信号を受信する。また、時刻ｔ２０６において、サーバ８２は、再送要求信号を受信したので、再送が要求されたストリーミングデータが格納されているRTPパケット２５２を、RTPパケット２５１−６に対応する再送パケットとして、通信網８３を介してクライアント８４あてに送信する。
【０１３９】
時刻ｔ２０７において、クライアント８４は、サーバ８２から送信されてきた、再送パケットとしてのRTPパケット２５２を受信する。
【０１４０】
このようにして、クライアント８４は、再送モードに同期モードが設定されている場合、予め定められた所定の時間間隔で再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０１４１】
このように、予め定められた所定の時間間隔で、再送要求信号を送信することによって、無駄な再送要求信号の送信を防止することができ、より効率的にデータを送受信することができる。
【０１４２】
図９は、再送モードに非同期モードが設定されている場合に、クライアント８４が再送要求信号を送信する処理を説明するタイムチャートである。
【０１４３】
図９において、横方向は、時間を示す。サーバ８２は、ストリーミングデータが格納されたRTPパケット２７１−１乃至RTPパケット２７１−５を、通信網８３を介して、クライアント８４あてに送信する。
【０１４４】
クライアント８４は、サーバ８２から送信されてきたRTPパケット２７１−１乃至RTPパケット２７１−３を受信する。また、時刻ｔ２３１において、クライアント８４は、サーバ８２から送信されてきたRTPパケット２７１−５を受信する。
【０１４５】
このとき、クライアント８４は、RTPパケット２７１−５を受信し、RTPパケット２７１−４を受信していないので、パケットロスが発生したと判定し、直ちに、RTPパケット２７１−４に格納されているストリーミングデータの再送を要求する旨の再送要求信号を生成する。そして、クライアント８４は、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０１４６】
時刻ｔ２３２において、サーバ８２は、クライアント８４から送信されてきた再送要求信号を受信する。また、時刻ｔ２３２において、サーバ８２は、再送要求信号を受信したので、再送が要求されたストリーミングデータが格納されているRTPパケット２７２を、RTPパケット２７１−４に対応する再送パケットとして、通信網８３を介してクライアント８４あてに送信する。
【０１４７】
クライアント８４は、サーバ８２から送信されてきた、再送パケットとしてのRTPパケット２７２を受信する。
【０１４８】
このようにして、クライアント８４は、再送モードに非同期モードが設定されている場合、パケットロスが発生したと判定されたとき、直ちに再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０１４９】
このように、再送モードに非同期モードが設定されている場合、リオーダが発生する可能性は低いので、パケットロスが発生したと判定されたとき、直ちに再送要求信号を送信することで、より迅速にデータを受信することができる。
【０１５０】
以下、図を参照して、サーバ８２およびクライアント８４のより具体的な処理について説明する。
【０１５１】
まず、図１０のフローチャートを参照して、サーバプログラムを実行するサーバ８２によるRTPパケットの送信の処理を説明する。
【０１５２】
ステップＳ１１において、サーバ８２は、RTPパケットの送信の処理に必要なデータを初期化する。例えば、ステップＳ１１において、エンコーダ１６１は、内蔵しているタイマの値を0msにセットし、パケタイザ１６２は、タイムスタンプおよびシーケンス番号を初期化する。
【０１５３】
ステップＳ１２において、エンコーダ１６１は、内蔵しているタイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していないと判定された場合、ステップＳ１２に戻り、タイマが終了したと判定されるまで、判定の処理を繰り返す。
【０１５４】
ステップＳ１２において、タイマが終了したと判定された場合、処理はステップＳ１３に進む。
【０１５５】
例えば、画像データのフレームの数が１秒当たり３０である場合、タイマが時間の経過に対応して値を増加させるとき、ステップＳ１２において、エンコーダ１６１は、33msなどの所定の値とタイマの値を比較することによりタイマが終了したか否かを判定する。
【０１５６】
例えば、ステップＳ１１において、タイマの値を33msにセットし、タイマの値が時間の経過に対応して値を減少させるとき、エンコーダ１６１は、タイマの値と、0msとを比較することによりタイマが終了したか否かを判定する。
【０１５７】
この場合における、タイマの値と比較される0msまたは33msは、フレームの数が１秒当たり３０である場合の例であり、本発明を限定するものではない。
【０１５８】
以下に説明するタイマに関する処理において、同様である。
【０１５９】
ステップＳ１３において、エンコーダ１６１は、ビデオカメラ８１から供給された画像データを１フレーム分キャプチャする。例えば、ステップＳ１３において、エンコーダ１６１は、ビデオカメラ８１から供給された画像データを順次取得して、取得した画像データのうち、１フレーム分をキャプチャする。
【０１６０】
ステップＳ１４において、エンコーダ１６１は、キャプチャした画像データをエンコードし、エンコードした画像データをパケタイザ１６２に供給する。例えば、ステップＳ１４において、エンコーダ１６１は、キャプチャした画像データをMPEG１、２、４、７、もしくは２１、JPEG（Joint Photographic Experts Group）、JPEG２０００、またはモーションJPEGなどの方式によりエンコードし、エンコードした画像データをパケタイザ１６２に供給する。
【０１６１】
ステップＳ１５において、パケタイザ１６２は、エンコーダ１６１から供給された画像データをRTP方式のパケットに格納することによって、RTPパケットを生成する。パケタイザ１６２は、生成したRTPパケットを通信部１０９および再送用バッファ１６３に供給する。
【０１６２】
ここで、図１１は、RTPパケットを説明する図である。RTPパケットの先頭には、図１１において“Ｖ”で表される、２ビットのバージョン情報が配置される。バージョン情報は、RTPパケットのバージョンを示す。
【０１６３】
バージョン情報の次に図１１中の“Ｐ”で表される１ビットのパディングが配置され、パディングに続いて、１ビットの拡張情報がRTPパケットに配置される。拡張情報は、図１１において、“Ｘ”で表される。拡張情報は、RTPパケットに拡張ヘッダを配置する場合に、所定の値に設定される。
【０１６４】
拡張情報に続いて、CSRC（Contributing Source）カウントがRTPパケットに配置される。CSRCカウントは、図１１中において、“ＣＣ”で表される。CSRCカウントは、CSRC識別子の数を表す。
【０１６５】
CSRCカウントに続いて配置される、１ビットのメーカー情報は、プロファイルによって定義される。メーカー情報は、図１１中において“ｍ”で表される。
【０１６６】
メーカー情報に続いて配置される、７ビットのペイロードタイプは、RTPパケットのフォーマットを定義するための情報である。ペイロードタイプは、図１１中において、“ＰＴ”で表される。RTPパケットにおいて、ペイロードタイプは、３３とされる。
【０１６７】
シーケンス番号は、ペイロードタイプの次に配置される、１６ビットの情報である。シーケンス番号は、RTPパケットの再生の順番を示す番号であり、送信の度に、１ずつ増える。
【０１６８】
シーケンス番号の次に配置される、３２ビットのタイムスタンプは、そのRTPパケットに格納されているストリーミングデータの最初のオクテットがサンプルされた時刻を示す情報である。また、タイムスタンプにより、受信側においてRTPパケットの展開時に処理時間の制御が実行され、リアルタイム画像、または音声の再生制御を行うことが可能となる。タイムスタンプは、１つの画像フレームに属する複数のRTPパケットに共通のタイムスタンプが設定される。
【０１６９】
SSRC（Synchronization Source）識別子は、タイムスタンプの次に配置される３２ビットの情報であって、RTPパケットに格納されるストリーミングデータのソースを示す。
【０１７０】
RTPパケットにおいて、SSRC識別子の次には、ストリーミングデータが格納される。図１１において、“Original Data”は、ストリーミングデータを示す。
【０１７１】
図１０のフローチャートの説明に戻り、ステップＳ１６において、再送用バッファ１６３は、パケタイザ１６２から供給されたRTPパケットを、再送パケットとして一時的に記憶する。
【０１７２】
ステップＳ１７において、通信部１０９の送信部１８１は、パケタイザ１６２から供給されたRTPパケットを、通信網８３を介して、クライアント８４あてに送信する。
【０１７３】
ステップＳ１８において、パケタイザ１６２は、RTPパケットに付加するタイムスタンプを更新する。
【０１７４】
ステップＳ１９において、エンコーダ１６１は、内蔵しているタイマをセットして、ステップＳ１２に戻り、上述した処理を繰り返す。例えば、ステップＳ１９において、エンコーダ１６１は、タイマの値を0msにセットする。
【０１７５】
このようにして、サーバ８２は、RTPパケットを生成し、生成したRTPパケットを、通信網８３を介して、クライアント８４あてに送信する。
【０１７６】
次に、図１２のフローチャートを参照して、サーバ８２による、RTPパケットの再送の処理を説明する。
【０１７７】
ステップＳ４１において、NACK処理部１６４は、通信部１０９が、クライアント８４から送信されてきた再送要求信号を受信したか否かを判定する。
【０１７８】
ステップＳ４１において、再送要求信号を受信していないと判定された場合、ステップＳ４１に戻り、再送要求信号を受信したと判定されるまで、判定の処理を繰り返す。
【０１７９】
ステップＳ４１において、再送要求信号を受信したと判定された場合、通信部１０９から再送要求信号が供給されるので、ステップＳ４２に進み、NACK処理部１６４は、通信部１０９から供給された再送要求信号を基に、再送が要求された画像データが格納されているRTPパケットを、再送用バッファ１６３から取得する。NACK処理部１６４は、再送用バッファ１６３から取得したRTPパケットを通信部１０９に供給する。
【０１８０】
より詳細には、ステップＳ４２において、NACK処理部１６４は、通信部１０９から供給された再送要求信号に含まれるシーケンス番号と同一のシーケンス番号を格納しているRTPパケットを、再送用バッファ１６３から取得する。NACK処理部１６４は、再送用バッファ１６３から取得したRTPパケットを通信部１０９に供給する。
【０１８１】
ステップＳ４３において、通信部１０９の送信部１８１は、NACK処理部１６４から供給されたRTPパケットを再送し、手続きは、ステップＳ４１に戻り上述した処理を繰り返す。すなわち、ステップＳ４３において、通信部１０９の送信部１８１は、NACK処理部１６４から供給されたRTPパケットを、通信網８３を介して、クライアント８４あてに送信する。
【０１８２】
このようにして、サーバ８２は、クライアント８４から送信されてきた再送要求信号を受信すると、再送が要求された画像データが格納されているRTPパケットを取得し、取得したRTPパケットを再送する。
【０１８３】
このように、RTPパケットを再送することによって、パケットロスが発生した場合においても、クライアント８４は、ロスしたRTPパケットに格納されている画像データを受信することができる。
【０１８４】
図１３のフローチャートを参照して、サーバ８２による、RTT計測パケットの返信の処理を説明する。
【０１８５】
ステップＳ６１において、RTT計測部１６５は、通信部１０９がクライアント８４から送信されてきたRTT計測パケットを受信したか否かを判定する。
【０１８６】
ステップＳ６１において、通信部１０９が、クライアント８４から送信されてきたRTT計測パケットを受信していないと判定された場合、ステップＳ６１に戻り、RTT計測パケットを受信したと判定されるまで、判定の処理を繰り返す。
【０１８７】
一方、ステップＳ６１において、通信部１０９が、クライアント８４から送信されてきたRTT計測パケットを受信したと判定された場合、通信部１０９からRTT計測パケットが供給されるので、ステップＳ６２に進み、RTT計測部１６５は、直ちに、受信したRTT計測パケットのデータ部分と同様のRTT計測パケットを生成して、生成したRTT計測パケットを通信部１０９に供給する。そして、通信部１０９の送信部１８１は、RTT計測部１６５から供給されたRTT計測パケットを、通信網８３を介して、クライアント８４あてに送信し、ステップＳ６１に戻り、上述した処理を繰り返す。
【０１８８】
このように、サーバ８２は、RTT計測パケットを受信すると、直ちに、クライアント８４あてにRTT計測パケットを返送（返信）する。
【０１８９】
図１４のフローチャートを参照して、クライアントプログラムを実行するクライアント８４による、デコードの処理を説明する。
【０１９０】
ステップＳ８１において、RTP処理部２０２は、通信部２０１がサーバ８２から送信されてきたRTPパケットを受信したか否かを判定する。ステップＳ８１において、RTPパケットを受信していないと判定された場合、ステップＳ８１に戻り、RTPパケットを受信したと判定されるまで、判定の処理を繰り返す。
【０１９１】
一方、ステップＳ８１において、RTPパケットを受信したと判定された場合、ステップＳ８２に進み、RTP処理部２０２は、通信部２０１の受信部２３２が受信し、通信部２０１の受信部２３２から供給されたRTPパケットからシーケンス番号を抽出する。RTP処理部２０２は、抽出したシーケンス番号をNACK処理部２０７およびリオーダ判定部２０４に供給する。
【０１９２】
ステップＳ８３において、RTP処理部２０２は、通信部２０１から供給されたRTPパケットから画像データを抽出し、抽出した画像データをデコーダ２０３に供給する。
【０１９３】
ステップＳ８４において、デコーダ２０３は、RTP処理部２０２から供給された画像データを、エンコーダ１６１の符号化方式に対応する復号方式で復号（デコード）する。デコーダ２０３は、復号した画像データを出力して、手続きはステップＳ８１に戻り、上述した処理を繰り返す。
【０１９４】
このようにして、クライアント８４は、サーバ８２から送信されてきたRTPパケットを受信し、RTPパケットに格納されている画像データを出力する。
【０１９５】
図１５のフローチャートを参照して、クライアント８４による、再送モードの更新の処理を説明する。
【０１９６】
ステップＳ１０１において、クライアント８４は、再送モードの更新の処理に必要なデータを初期化する。例えば、ステップＳ１０１において、リオーダ判定部２０４は、リオーダデータベース２０５を制御し、リオーダデータベース２０５を初期化させる。
【０１９７】
ステップＳ１０２において、リオーダデータ判定部２０４は、RTP処理部２０２からシーケンス番号が供給されたか否かを判定する。ステップＳ１０２において、RTP処理部２０２からシーケンス番号が供給されていないと判定された場合、ステップＳ１０２に戻り、RTP処理部２０２からシーケンス番号が供給されたと判定されるまで、判定の処理を繰り返す。
【０１９８】
一方、ステップＳ１０２において、RTP処理部２０２からシーケンス番号が供給されたと判定された場合、ステップＳ１０３に進み、リオーダ判定部２０４は、リオーダデータベースの更新の処理を行う。なお、リオーダデータベースの更新の処理の詳細は後述するが、リオーダデータベースの更新の処理において、リオーダ判定部２０４は、リオーダデータベース２０５制御し、シーケンス番号を保持させることにより、リオーダデータベース２０５を更新する。
【０１９９】
ステップＳ１０４において、リオーダ判定部２０４は、リオーダデータベース２０５に保持されているシーケンス番号を基に、所定の期間内に予め定められた回数以上のリオーダが発生したか否かを判定する。
【０２００】
例えば、ステップＳ１０４において、リオーダ判定部２０４は、１０秒間に２回以上のリオーダが発生したか否かを判定する。
【０２０１】
ここで、例えば、現在時刻を時刻ｔ２５２とし、現在時刻よりも１０秒前の時刻を時刻ｔ２５１とする。そして、例えば、リオーダデータベース２０５が、時刻ｔ２５１から時刻ｔ２５２（現在時刻）までの期間に受信されたRTPパケットのシーケンス番号を保持しており、リオーダデータベース２０５が、シーケンス番号“１”、“２”、“３”、“４”、“５”、“６”、および“７”を、“１”、“２”、“３”、“４”、“５”、“７”、および“６”の順番で保持している場合、時刻ｔ２５１から時刻ｔ２５２（現在時刻）までの１０秒間にリオーダの発生は、１回であるので、ステップＳ１０４において、リオーダ判定部２０４は、１０秒間に２回以上のリオーダが発生していないと判定する。
【０２０２】
ステップＳ１０４において、所定の期間内に予め定められた回数以上のリオーダが発生したと判定された場合、ステップＳ１０５に進み、再送モード記憶部２０６は、リオーダ判定部２０４の制御のもと、再送モードに同期モードを設定し、手続きは、ステップＳ１０２に戻る。
【０２０３】
例えば、ステップＳ１０５において、再送モード記憶部２０６は、リオーダ判定部２０４の制御のもと、記憶している再送モードフラグをセットする（例えば、再送モードフラグを“１”に設定する）ことにより、再送モードに同期モードを設定する。
【０２０４】
一方、ステップＳ１０４において、所定の期間内に予め定められた回数以上のリオーダが発生していないと判定された場合、ステップＳ１０６に進み、再送モード記憶部２０６は、リオーダ判定部２０４の制御のもと、再送モードに非同期モードを設定し、手続きは、ステップＳ１０２に戻り、上述した処理を繰り返す。
【０２０５】
例えば、ステップＳ１０６において、再送モード記憶部２０６は、リオーダ判定部２０４の制御のもと、記憶している再送モードフラグをリセットする（例えば、再送モードフラグを“０”に設定する）ことにより、再送モードに非同期モードを設定する。
【０２０６】
このようにして、リオーダ判定部２０４は、リオーダデータベース２０５を更新し、リオーダデータベース２０５が保持しているシーケンス番号を基に、再送モードの設定を行う。
【０２０７】
このように、再送モードの設定を行うことにより、クライアント８４は、リオーダにより生じる無駄な再送要求信号の送信を防止することができ、より効率良くデータを受信することができる。
【０２０８】
次に、図１６のフローチャートを参照して、図１５のステップＳ１０３の処理に対応するリオーダデータベースの更新の処理を説明する。
【０２０９】
ステップＳ１２１において、リオーダ判定部２０４は、送信履歴保持部２０９が、RTP処理部２０２から供給されたシーケンス番号を保持しているか否かを判定する。
【０２１０】
例えば、再送モードに非同期モードが設定されており、RTP処理部２０２からリオーダ判定部２０４に、シーケンス番号“１”、“２”、“３”、“４”、“５”、“６”、および“７”が、“１”、“２”、“３”、“４”、“５”、“７”、および“６”の順番で供給された場合、リオーダ判定部２０４にシーケンス番号“７”が供給されたとき、NACK処理部２０７は、シーケンス番号“６”をロスしたと判定し、シーケンス番号が“６”であるRTPパケットの再送を要求する旨の再送要求信号を生成するので、送信履歴保持部２０９には、シーケンス番号“６”およびシーケンス番号“６”を含む再送要求信号が送信された時刻が保持されている。
【０２１１】
したがって、この場合、RTP処理部２０２からリオーダ判定部２０４にシーケンス番号“６”が供給されたとき、送信履歴保持部２０９には、シーケンス番号“６”およびシーケンス番号“６”を含む再送要求信号が送信された時刻が保持されているので、ステップＳ１２１において、リオーダ判定部２０４は、送信履歴保持部２０９が、RTP処理部２０２から供給されたシーケンス番号を保持していると判定する。
【０２１２】
ステップＳ１２１において、送信履歴保持部２０９が、RTP処理部２０２から供給されたシーケンス番号を保持していると判定された場合、ステップＳ１２２に進み、リオーダ判定部２０４は、RTP処理部２０２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットであるか否かを判定する。
【０２１３】
例えば、ステップＳ１２２において、リオーダ判定部２０４は、送信履歴保持部２０９が保持しているシーケンス番号およびシーケンス番号を含む再送要求信号を送信した時刻、並びにRTT保持部２１１が保持している往復遅延時間を基に、式（１）を計算することにより、RTP処理部２０２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットであるか否かを判定する。
【０２１４】
（現在時刻）−（再送要求信号の送信時刻）≦（往復遅延時間）              ・・・（１）
【０２１５】
ここで、再送要求信号の送信時刻は、送信履歴保持部２０９に保持されている再送要求信号の送信時刻のうち、RTP処理部２０２からリオーダ判定部２０４に供給されたシーケンス番号と同一のシーケンス番号を含む再送要求信号の送信時刻をいう。また、ここで、リオーダ判定部２０４は、例えば、内蔵しているRTC（Real Time Clock）などから現在時刻を取得する。
【０２１６】
すなわち、この場合、リオーダ判定部２０４は、式（１）が満たされる場合、RTP処理部２０２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットであると判定し、式（１）が満たされないとき、RTP処理部２０２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットでないと判定する。
【０２１７】
ステップＳ１２２において、RTP処理部２０２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットでないと判定された場合、リオーダが発生したので、手続きはステップＳ１２３に進む。
【０２１８】
また、ステップＳ１２１において、送信履歴保持部２０９が、RTP処理部２０２から供給されたシーケンス番号を保持していないと判定された場合、RTP処理部２０２から供給されたシーケンス番号を含むRTPパケットは、再送されたRTPパケットではないRTPパケットであって、正常に受信されたRTPパケットまたはリオーダの発生によりシーケンス番号の順番で受信されなかったRTPパケットであるので、ステップＳ１２２の処理はスキップされ、手続きはステップＳ１２３に進む。
【０２１９】
ステップＳ１２３において、リオーダデータベース２０５は、リオーダ判定部２０４の制御のもと、RTP処理部２０２からリオーダ判定部２０４に供給されたシーケンス番号を、RTPパケットを受信した順（すなわち、RTP処理部２０２からリオーダ判定部２０４に供給された順）に保持する。
【０２２０】
したがって、この場合、例えば、RTP処理部２０２からシーケンス番号“６”がリオーダ判定部２０４に供給され、リオーダデータベース２０５がシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”をシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”の順番で保持しているとき、リオーダデータベース２０５は、リオーダ判定部２０４の制御のもと、リオーダデータベース２０５が保持しているシーケンス番号の順番が、“１”、“２”、“３”、“４”、“５”、“７”、および“６”の順番となるように、シーケンス番号“６”を保持する。
【０２２１】
また、ステップＳ１２２において、RTP処理部２０２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットであると判定された場合、ステップＳ１２４に進み、リオーダデータベース２０５は、リオーダ判定部２０４の制御のもと、RTP処理部２０２からリオーダ判定部２０４に供給されたシーケンス番号を、シーケンス番号順に保持する。
【０２２２】
したがって、この場合、例えば、RTP処理部２０２からシーケンス番号“６”がリオーダ判定部２０４に供給され、リオーダデータベース２０５がシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”をシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”の順番で保持しているとき、リオーダデータベース２０５は、リオーダ判定部２０４の制御のもと、リオーダデータベース２０５が保持しているシーケンス番号の順番が、“１”、“２”、“３”、“４”、“５”、“６”、および“７”の順番となるように、シーケンス番号“６”を保持する。
【０２２３】
ステップＳ１２５において、リオーダデータベース２０５は、リオーダ判定部２０４の制御のもと、リオーダデータベース２０５を更新し、処理は終了する。例えば、現在時刻を時刻ｔ２５２とし、現在時刻よりも１０秒前の時刻を時刻ｔ２５１とする。そして、リオーダデータベース２０５が、時刻ｔ２５１から時刻ｔ２５２（現在時刻）までの期間に受信されたRTPパケットに含まれるシーケンス番号を保持する場合、ステップＳ１２５において、リオーダデータベース２０５は、リオーダ判定部２０４の制御のもと、リオーダデータベース２０５が保持しているシーケンス番号のうち、時刻ｔ２５１より前の時刻に受信されたRTPパケットに含まれるシーケンス番号を消去することによって、リオーダデータベース２０５を更新する。
【０２２４】
このようにして、クライアント８４は、RTPパケットを受信すると、リオーダデータベース２０５を更新する。
【０２２５】
このように、リオーダデータベース２０５を更新することによって、クライアント８４は、リオーダデータベース２０５に保持されているシーケンス番号を基に、パケットのリオーダが発生したか否かを知ることができる。
【０２２６】
図１７のフローチャートを参照して、クライアント８４による、応答の処理を説明する。
【０２２７】
ステップＳ１４１において、クライアント８４は、応答の処理に必要なデータを初期化する。例えば、ステップＳ１４１において、NACK処理部２０７は、NACKデータベース２０８および送信履歴保持部２０９を制御し、NACKデータベース２０８および送信履歴保持部２０９を初期化させる。
【０２２８】
ステップＳ１４２において、NACK処理部２０７は、再送モードに同期モードが設定されているか否かを判定する。例えば、ステップＳ１４２において、NACK処理部２０７は、再送モード記憶部２０６が記憶している再送モードフラグがセットされているか否かを判定することで、再送モードに同期モードが設定されているか否かを判定する。
【０２２９】
この場合、例えば、NACK処理部２０７は、再送モード記憶部２０６が記憶している再送モードフラグがセットされている（例えば、再送モードフラグに“１”が設定されている）とき、再送モードに同期モードが設定されていると判定し、再送モード記憶部２０６が記憶している再送モードフラグがリセットされている（例えば、再送モードフラグに“０”が設定されている）とき、再送モードに同期モードが設定されていないと判定する。
【０２３０】
ステップＳ１４２において、再送モードに同期モードが設定されていると判定された場合、ステップＳ１４３に進み、NACK処理部２０７は、同期モードにおける再送要求信号の送信の処理を行い、手続きは、ステップＳ１４２に戻る。なお、同期モードにおける再送要求信号の送信の処理の詳細は後述するが、同期モードにおける再送要求信号の送信の処理において、クライアント８４は、所定の時間間隔で、再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０２３１】
一方、ステップＳ１４２において、再送モードに同期モードが設定されていないと判定された場合、ステップＳ１４４に進み、NACK処理部２０７は、非同期モードにおける再送要求信号の送信の処理を行い、手続きは、ステップＳ１４２に戻り、上述した処理を繰り返す。なお、非同期モードにおける再送要求信号の送信の処理の詳細は後述するが、非同期モードにおける再送要求信号の送信の処理において、クライアント８４は、パケットロスが発生したと判定されると、直ちに、再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０２３２】
このようにして、NACK処理部２０７は、再送モード記憶部２０６に記憶されている再送モードフラグを基に、同期モードにおける再送要求信号の送信の処理または非同期モードにおける再送要求信号の送信の処理を行う。
【０２３３】
このように、再送モードフラグを基に、同期モードにおける再送要求信号の送信の処理または非同期モードにおける再送要求信号の送信の処理を行うことで、クライアント８４は、リオーダにより生じる無駄な再送要求信号の送信を防止することができ、より効率良くデータを受信することができる。
【０２３４】
次に、図１８のフローチャートを参照して、図１７のステップＳ１４３の処理に対応する、同期モードにおける再送要求信号の送信の処理を説明する。
【０２３５】
ステップＳ１６１において、NACK処理部２０７は、RTP処理部２０２からシーケンス番号が供給されたか否かを判定する。
【０２３６】
ステップＳ１６１において、RTP処理部２０２からシーケンス番号が供給されたと判定された場合、ステップＳ１６２に進み、NACKデータベース２０８は、NACK処理部２０７の制御のもと、NACKデータベース２０８に保持されているシーケンス番号のうち、RTP処理部２０２からNACK処理部２０７に供給されたシーケンス番号を消去する。
【０２３７】
より詳細には、ステップＳステップ１６２において、NACKデータベース２０８は、NACKデータベース２０８が、RTP処理部２０２からNACK処理部２０７に供給されたシーケンス番号と同一のシーケンス番号を保持している場合、NACK処理部２０７の制御のもと、NACKデータベース２０８が保持しているシーケンス番号のうち、RTP処理部２０２からNACK処理部２０７に供給されたシーケンス番号を消去する。
【０２３８】
また、NACKデータベース２０８は、NACKデータベース２０８が、RTP処理部２０２からNACK処理部２０７に供給されたシーケンス番号と同一のシーケンス番号を保持していない場合、シーケンス番号を消去しない。
【０２３９】
したがって、例えば、NACKデータベース２０８にシーケンス番号“１”が保持されており、RTP処理部２０２からNACK処理部２０７にシーケンス番号“１”が供給された場合、ステップＳ１６２において、NACKデータベース２０８は、NACK処理部２０７の制御のもと、NACKデータベース２０８からシーケンス番号“１”を消去する。
【０２４０】
ステップＳ１６３において、NACK処理部２０７は、RTP処理部２０２から供給されたシーケンス番号を基に、パケットロスが発生したか否かを判定する。
【０２４１】
ステップＳ１６３において、パケットロスが発生したと判定された場合、ステップＳ１６４に進み、NACKデータベース２０８は、NACK処理部２０７の制御のもと、ロスしたRTPパケットに含まれるシーケンス番号を保持する。
【０２４２】
ステップＳ１６５において、NACK処理部２０７は、内蔵しているタイマが終了したか否かを判定する。例えば、ステップＳ１６５において、NACK処理部２０７は、内蔵しているタイマの値と10sなどの所定の値とを比較することによって、タイマが終了したか否かを判定する。
【０２４３】
ステップＳ１６５において、タイマが終了したと判定された場合、ステップＳ１６６に進み、NACK処理部２０７は、NACKデータベース２０８に保持されているシーケンス番号、RTT保持部２１１に保持されている往復遅延時間、並びに送信履歴保持部２０９に保持されているシーケンス番号および再送要求信号を送信した時刻を基に、再送要求信号を生成する。NACK処理部２０７は、生成した再送要求信号を通信部２０１に供給するとともに、再送要求信号を送信した時刻（より詳細には、再送要求信号を生成した時刻）および再送要求信号に含まれるシーケンス番号を送信履歴保持部２０９に供給する。
【０２４４】
例えば、ステップＳ１６６において、NACK処理部２０７は、NACKデータベース２０８に保持されているシーケンス番号のうち、式（２）を満たすシーケンス番号を含むRTPパケットの再送を要求する旨の再送要求信号を生成する。そして、NACK処理部２０７は、生成した再送要求信号を通信部２０１に供給するとともに、再送要求信号を送信した時刻および再送要求信号に含まれるシーケンス番号を送信履歴保持部２０９に供給する。
【０２４５】
（現在時刻）−（再送要求信号の送信時刻）≧（往復遅延時間）              ・・・（２）
【０２４６】
ここで、再送要求信号の送信時刻とは、送信履歴保持部２０９に保持されている再送要求信号の送信時刻のうち、NACKデータベース２０８に保持されているシーケンス番号と同一のシーケンス番号を含む再送要求信号の送信時刻をいう。また、ここで、NACK処理部２０７は、例えば、内蔵しているRTCなどから現在時刻を取得する。
【０２４７】
また、NACK処理部２０７は、NACKデータベース２０８に保持されているシーケンス番号のうち、送信履歴保持部２０９に保持されていないシーケンス番号を含むRTPパケットの再送を要求する旨の再送要求信号を生成する。NACK処理部２０７は、生成した再送要求信号を通信部２０１に供給するとともに、再送要求信号を送信した時刻および再送要求信号に含まれるシーケンス番号を送信履歴保持部２０９に供給する。
【０２４８】
ここで、再送要求信号は、例えば、図１９に示すNACK（Negative Acknowledgement）パケットである。なお、バージョン情報、パディング、およびSSRC識別子は、図１１で示されるRTPパケットの場合と同様であるので、その説明は省略する。
【０２４９】
NACKパケットにおいて、パディングに続いて５ビットのサブタイプが配置される。
【０２５０】
NACKパケットにおいて、ペイロードタイプは２０４とされる。ペイロードタイプの次に配置される、１６ビットのメッセージ長は、NACKパケットの長さ（サイズ）を示す情報である。
【０２５１】
３２ビットのSSRC識別子に続いて、３２ビットの名前が配置される。名前は、例えば、NACKパケットを取り扱うアプリケーションプログラムの名前である。
【０２５２】
名前に続いて配置される３２ビットの要求シーケンス番号は、パケットロスが発生したRTPパケット、すなわち、クライアント８４によって再送が要求されるパケットを特定するシーケンス番号を示す。
【０２５３】
図１８のフローチャートの説明に戻り、ステップＳ１６７において、通信部２０１の送信部２３１は、NACK処理部２０７から供給された再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０２５４】
ステップＳ１６８において、送信履歴保持部２０９は、NACK処理部２０７から供給された、再送要求信号を送信した時刻および再送要求信号に含まれるシーケンス番号を保持する。
【０２５５】
ステップＳ１６９において、NACK処理部２０７は、内蔵しているタイマをセットして、処理は終了する。例えば、ステップＳ１６９において、NACK処理部２０７は、内蔵しているタイマの値を0sにセットする。
【０２５６】
また、ステップＳ１６１において、RTP処理部２０２からシーケンス番号が供給されなかったと判定された場合、ステップＳ１６２の処理乃至ステップＳ１６９の処理はスキップされ、処理は終了する。
【０２５７】
ステップＳ１６３において、パケットロスが発生していないと判定された場合、ステップＳ１６４の処理乃至ステップＳ１６９の処理はスキップされ、処理は終了する。
【０２５８】
ステップＳ１６５において、タイマが終了していないと判定された場合、ステップＳ１６６の処理乃至ステップＳ１６９の処理はスキップされ、処理は終了する。
【０２５９】
このようにして、クライアント８４は、再送モードに同期モードが設定されている場合、所定の時間間隔で再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０２６０】
このように、再送モードに同期モードが設定されている場合、所定の時間間隔で再送要求信号を送信するので、クライアント８４は、リオーダにより生じる無駄な再送要求信号の送信を防止することができ、より効率良くデータを受信することができる。
【０２６１】
図２０のフローチャートを参照して、図１７のステップＳ１４４の処理に対応する、非同期モードにおける再送要求信号の送信の処理を説明する。なお、ステップＳ１９１の処理乃至ステップＳ１９４の処理、ステップＳ１９６の処理、およびステップＳ１９７の処理のそれぞれは、図１８におけるステップＳ１６１の処理乃至ステップＳ１６４の処理、ステップＳ１６７の処理、およびステップＳ１６８の処理のそれぞれと同様なので、その説明は省略する。
【０２６２】
ステップＳ１９５において、NACK処理部２０７は、NACKデータベース２０８に保持されているシーケンス番号を含む、RTPパケットの再送を要求する旨の再送要求信号を生成する。NACK処理部２０７は、生成した再送要求信号を通信部２０１に供給するとともに、再送要求信号を送信した時刻および再送要求信号に含まれるシーケンス番号を送信履歴保持部２０９に供給する。
【０２６３】
このようにして、クライアント８４は、再送モードに非同期モードが設定されている場合、パケットロスが発生したと判定されたとき、直ちに再送要求信号を生成し、生成した再送要求信号を、通信網８３を介して、サーバ８２あてに送信する。
【０２６４】
このように、再送モードに非同期モードが設定されている場合、クライアント８４は、リオーダが発生する可能性は低いので、パケットロスが発生したと判定されたとき、直ちに再送要求信号を送信することで、より迅速にデータを受信することができる。
【０２６５】
図２１のフローチャートを参照して、クライアント８４による、RTT計測パケットの送信の処理を説明する。
【０２６６】
ステップＳ２２１において、RTT計測部２１０は、内蔵しているタイマの初期化を行う。例えば、ステップＳ２２１において、RTT計測部２１０は、内蔵しているタイマの値を0sにセットし、10sなどの所定の値と比較することによりタイマが終了したか否かを判定する。
【０２６７】
ステップＳ２２２において、RTT計測部２１０は、内蔵しているタイマの値を基に、タイマが終了したか否かを判定する。
【０２６８】
ステップＳ２２２において、タイマが終了したと判定された場合、ステップＳ２２３に進み、RTT計測部２１０は、現在時刻を含むRTT計測パケットを生成し、生成したRTT計測パケットを通信部２０１に供給する。
【０２６９】
例えば、ステップＳ２２３において、RTT計測部２１０は、RTT計測パケットとしてピン（Ping）を生成し、生成したピンを通信部２０１に供給する。
【０２７０】
ステップＳ２２４において、通信部２０１の送信部２３１は、RTT計測部２１０から供給されたRTT計測パケットを、通信網８３を介して、サーバ８２あてに送信する。
【０２７１】
ステップＳ２２５において、RTT計測部２１０は、内蔵しているタイマをセットし、手続きは、ステップＳ２２２に戻り、上述した処理を繰り返す。例えば、ステップＳ２２５において、RTT計測部２１０は、内蔵しているタイマの値を0sにセットする。
【０２７２】
一方、ステップＳ２２２において、タイマが終了していないと判定された場合、ステップＳ２２６に進み、RTT計測部２１０は、通信部２０１が、サーバ８２から送信されてきたRTT計測パケットを受信したか否かを判定する。
【０２７３】
ステップＳ２２６において、RTT計測パケットを受信したと判定された場合、通信部２０１からRTT計測パケットが供給されるので、ステップＳ２２７に進み、RTT計測部２１０は、往復遅延時間を算出し、算出した往復遅延時間をRTT保持部２１１に供給する。
【０２７４】
例えば、ステップＳ２２７において、RTT計測部２１０は、式（３）を計算することにより、往復遅延時間を算出する。
【０２７５】
（往復遅延時間）＝
（RTT計測パケットの受信時刻）−（RTT計測パケットの送信時刻）    ・・・（３）
【０２７６】
ここで、RTT計測パケットの送信時刻とは、RTT計測パケットに格納された、RTT計測パケットの送信時刻であり、RTT計測パケットの受信時刻とは、通信部２０１が受信したRTT計測パケットがRTT計測部２１０に供給された時刻である。
【０２７７】
ステップＳ２２８において、RTT保持部２１１は、RTT計測部２１０から供給された往復遅延時間を保持し、手続きは、ステップＳ２２２に戻り、上述した処理を繰り返す。
【０２７８】
また、ステップＳ２２６において、RTT計測パケットを受信していないと判定された場合、ステップＳ２２７の処理およびステップＳ２２８の処理はスキップされ、手続きは、ステップＳ２２２に戻る。
【０２７９】
このようにして、クライアント８４は、RTT計測パケットを生成し、生成したRTT計測パケットを、通信網８３を介して、サーバ８２あてに送信する。そして、クライアント８４は、サーバ８２から送信されてきたRTT計測パケットを受信し、受信したRTT計測パケットを基に、往復遅延時間を算出する。
【０２８０】
以上のように、クライアント８４は、所定の期間にリオーダが発生した回数を基に、再送要求信号を送信する時間間隔を変化させるようにしたので、リオーダにより生じる無駄な再送要求信号の送信を防止することができ、より効率よくデータを送受信することができる。
【０２８１】
次に、本発明を適用した第２の実施の形態について説明する。
【０２８２】
図２２は、サーバの機能の構成を示すブロック図である。
【０２８３】
サーバ３０１は、エンコーダ３１１、パケタイザ３１２、通信部３１３、再送用バッファ３１４、およびNACK処理部３１５を含むように構成される。
【０２８４】
なお、エンコーダ３１１、再送用バッファ３１４、およびNACK処理部３１５のそれぞれは、図６におけるエンコーダ１６１、再送用バッファ１６３、およびNACK処理部１６４のそれぞれと同様なので、その説明は、適宜、省略する。
【０２８５】
パケタイザ３１２は、エンコーダ３１１から供給された画像データをRTP方式のパケットに格納し、拡張情報に“０”を設定したRTPパケットを生成する。パケタイザ３１２は、生成した、拡張情報に“０”を設定したRTPパケットを通信部３１３に供給する。ここで、拡張情報に“０”を設定したRTPパケットは、送信パケット（再送パケットではないパケット）としてのRTPパケットであることを示す。
【０２８６】
また、パケタイザ３１２は、エンコーダ３１１から供給された画像データをRTP方式のパケットに格納し、拡張情報に“１”を設定したRTPパケットを生成する。パケタイザ３１２は、生成した、拡張情報に“１”を設定したRTPパケットを再送用バッファ３１４に供給する。ここで、拡張情報に“１”を設定したRTPパケットは、再送パケットとしてのRTPパケットであることを示す。
【０２８７】
通信部３１３は、各種のデータを送信する送信部３３１および各種のデータを受信する受信部３３２を備えており、通信網を介してデータの送受信を行う。
【０２８８】
通信部３１３の送信部３３１は、パケタイザ３１２またはNACK処理部３１５から供給されたRTPパケットを、通信網を介して、クライアントあてに送信する。
【０２８９】
また、通信部３１３の受信部３３２は、クライアントから送信されてきた再送要求信号を受信し、受信した再送要求信号をNACK処理部３１５に供給する。
【０２９０】
図２３は、クライアントの機能の構成を示すブロック図である。
【０２９１】
クライアント３５１は、通信部３６１、RTP処理部３６２、デコーダ３６３、リオーダ判定部３６４、リオーダデータベース３６５、再送モード記憶部３６６、NACK処理部３６７、およびNACKデータベース３６８を含むように構成される。
【０２９２】
なお、デコーダ３６３、再送モード記憶部３６６、およびNACKデータベース３６８のそれぞれは、図７におけるデコーダ２０３、再送モード記憶部２０６、およびNACKデータベース２０８のそれぞれと同様なので、その説明は、適宜、省略する。
【０２９３】
通信部３６１は、各種のデータを送信する送信部３８１および各種のデータを受信する受信部３８２を備えており、通信網を介してデータの送受信を行う。
【０２９４】
通信部３６１の送信部３８１は、NACK処理部３６７から供給された再送要求信号を、通信網を介して、サーバ３０１あてに送信する。
【０２９５】
通信部３６１の受信部３８２は、サーバ３０１から送信されてきたRTPパケットを受信し、受信したRTPパケットをRTP処理部３６２に供給する。
【０２９６】
RTP処理部３６２は、通信部３６１から供給されたRTPパケットから画像データを抽出し、抽出した画像データをデコーダ３６３に供給する。また、RTP処理部３６２は、通信部３６１から供給されたRTPパケットからシーケンス番号を抽出し、抽出したシーケンス番号をNACK処理部３６７に供給する。
【０２９７】
RTP処理部３６２は、通信部３６１から供給されたRTPパケットからシーケンス番号および再送情報を抽出し、抽出したシーケンス番号および再送情報をリオーダ判定部３６４に供給する。ここで、再送情報とは、通信部３６１から供給されたRTPパケットが再送されたRTPパケットであるか否かを示す情報をいう。
【０２９８】
したがって、RTPパケットに含まれる拡張情報に“０”が設定されているRTPパケットから抽出される再送情報は、RTPパケットが、送信パケットであることを示す再送情報であり、RTPパケットに含まれる拡張情報に“１”が設定されているRTPパケットから抽出される再送情報は、RTPパケットが、再送パケットであることを示す再送情報である。
【０２９９】
リオーダ判定部３６４は、リオーダデータベース３６５を制御し、リオーダデータベース３６５に、RTP処理部３６２から供給されたシーケンス番号を保持させる。また、リオーダ判定部３６４は、再送モード記憶部３６６を制御し、再送モード記憶部３６６に再送モードの設定を行わせる。
【０３００】
リオーダ判定部３６４は、RTP処理部３６２から供給されたシーケンス番号および再送情報を基に、RTP処理部３６２から供給されたシーケンス番号によって特定されるRTPパケットが、再送されたRTPパケットであるか否かを判定する。
【０３０１】
リオーダ判定部３６４は、RTP処理部３６２から供給されたシーケンス番号によって特定されるRTPパケットが、再送されたRTPパケットであると判定された場合、リオーダデータベース３６５を制御し、RTP処理部３６２から供給されたシーケンス番号を、リオーダデータベース３６５に番号順に保持させる。
【０３０２】
また、リオーダ判定部３６４は、RTP処理部３６２から供給されたシーケンス番号によって特定されるRTPパケットが、再送されたRTPパケットでないと判定された場合、リオーダデータベース３６５を制御し、RTP処理部３６２から供給されたシーケンス番号を、リオーダデータベース３６５にRTPパケットを受信した順に保持させる。
【０３０３】
リオーダ判定部３６４は、リオーダデータベース３６５が保持しているシーケンス番号が含まれているRTPパケットを受信した期間に、予め定められた回数以上のリオーダが発生したか否かを判定する。すなわち、リオーダ判定部３６４は、リオーダデータベース３６５が保持しているシーケンス番号の数のRTPパケットにおいて、所定の回数以上のリオーダが発生したか否かを判定する。
【０３０４】
リオーダ判定部３６４は、所定の回数以上のリオーダが発生したと判定された場合、再送モード記憶部３６６を制御し、再送モードに同期モードを設定させる。
【０３０５】
一方、リオーダ判定部３６４は、所定の回数以上のリオーダが発生していないと判定された場合、再送モード記憶部３６６を制御し、再送モードに非同期モードを設定させる。
【０３０６】
リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、受信されたRTPパケットのシーケンス番号を、所定の数だけ一時的に保持する。また、リオーダデータベース３６５は、シーケンス番号のそれぞれに対応する再送フラグを保持しており、リオーダ判定部３６４の制御のもと、再送フラグをセットするかリセットする。
【０３０７】
すなわち、リオーダデータベース３６５は、シーケンス番号を保持する場合、送信パケットに含まれているシーケンス番号に対応する再送フラグをリセット（例えば、“０”が設定される）し、再送パケットに含まれているシーケンス番号に対応する再送フラグをセット（例えば、“１”が設定される）する。
【０３０８】
NACK処理部３６７は、NACKデータベース３６８が、RTP処理部３６２から供給されたシーケンス番号を保持している場合、NACKデータベース３６８を制御し、RTP処理部３６２から供給されたシーケンス番号を、NACKデータベース３６８から消去させる。
【０３０９】
NACK処理部３６７は、NACKデータベース３６８が、RTP処理部３６２から供給されたシーケンス番号を保持していない場合、シーケンス番号を消去させない。
【０３１０】
NACK処理部３６７は、RTP処理部３６２から供給されたシーケンス番号を基に、パケットロスが発生したか否かを判定する。
【０３１１】
NACK処理部３６７は、パケットロスが発生したと判定された場合、NACKデータベース３６８を制御し、ロスしたRTPパケットのシーケンス番号を、NACKデータベース３６８に保持させる。NACK処理部３６７は、パケットロスが発生していないと判定された場合、シーケンス番号を保持させない。
【０３１２】
NACK処理部３６７は、再送モード記憶部３６６が記憶している再送モードフラグを基に、再送モードに同期モードが設定されているか否かを判定する。
【０３１３】
NACK処理部３６７は、再送モードに同期モードが設定されていると判定された場合、予め定められた所定の時間間隔で、NACKデータベース３６８に保持されているシーケンス番号を基に、再送要求信号を生成する。NACK処理部３６７は、生成した再送要求信号を通信部３６１に供給する。なお、NACKデータベース３６８にシーケンス番号が保持されていない場合、NACK処理部３６７は、予め定められた所定の期間が経過しても再送要求信号を生成しない。
【０３１４】
NACK処理部３６７は、再送モードに同期モードが設定されていないと判定された場合、パケットロスが発生したとき、直ちにNACKデータベース３６８に保持されているシーケンス番号を基に、再送要求信号を生成する。NACK処理部３６７は、生成した再送要求信号を通信部３６１に供給する。なお、パケットロスが発生していないとき、NACK処理部３６７は、再送要求信号を生成しない。
【０３１５】
ところで、ARQ方式においては、再送パケットとして送信されるRTPパケットには、送信パケットとして送信されるRTPパケットに格納されるデータと同一のデータが格納されて送信される。
【０３１６】
したがって、ARQ方式によるストリーミングデータ配信システムにおいて、受信したRTPパケットが、再送パケットとしてのRTPパケットであるか否かの判定を行うためには、図２４に示すようにクライアントは、再送要求信号の送信履歴を保持しておく必要があった。
【０３１７】
図２４において、横方向は、時間を示す。サーバは、ストリーミングデータが格納された送信パケット４０１−１乃至送信パケット４０１−５を、通信網を介して、クライアントあてに送信する。
【０３１８】
クライアントは、サーバから送信されてきた送信パケット４０１−１乃至送信パケット４０１−３を受信する。時刻ｔ３０１において、クライアントは、サーバから送信されてきた送信パケット４０１−５を受信する。
【０３１９】
このとき、クライアントは、送信パケット４０１−５を受信し、送信パケット４０１−４を受信していないので、パケットロスが発生したと判定し、直ちに、送信パケット４０１−４に格納されているストリーミングデータの再送を要求する旨の再送要求信号を生成する。そして、クライアントは、生成した再送要求信号を、通信網を介して、サーバあてに送信するとともに、送信パケット４０１−４の再送を要求した旨の情報を、送信履歴として保持する。
【０３２０】
また、サーバは、ストリーミングデータが格納された送信パケット４０１−６乃至送信パケット４０１−８を、通信網を介して、クライアントあてに送信する。クライアントは、サーバから送信されてきた送信パケット４０１−６乃至送信パケット４０１−８を受信する。
【０３２１】
時刻ｔ３０２において、サーバは、クライアントから送信されてきた再送要求信号を受信する。サーバは、再送要求信号を受信したので、再送が要求されたストリーミングデータが格納されている再送パケット４０２を、送信パケット４０１−４に対応する再送パケットとして、通信網を介してクライアントあてに送信する。
【０３２２】
時刻ｔ３０３において、クライアントは、サーバから送信されてきた再送パケット４０２を受信する。クライアントは、送信パケット４０１−４の再送を要求した旨の情報を、送信履歴として保持しているので、時刻ｔ３０３において受信した再送パケット４０２が、送信パケット４０１−４に対応する再送パケットであることを知ることができる。
【０３２３】
サーバは、ストリーミングデータが格納された送信パケット４０１−９および送信パケット４０１−１０を、通信網を介して、クライアントあてに送信する。クライアントは、サーバから送信されてきた送信パケット４０１−９および送信パケット４０１−１０を受信する。
【０３２４】
このように、受信したRTPパケットが、再送パケットとしてのRTPパケットであるか否かの判定を行うためには、クライアントが、再送要求信号の送信履歴を保持しておく必要があった。
【０３２５】
したがって、例えば、クライアントにおいて、再送パケットとしてのRTPパケットの数をカウントする処理などを実行する場合、シーケンス番号の順番に受信されなかったRTPパケットが、再送パケットとしてのRTPパケットであるか、またはリオーダが生じたためにシーケンス番号の順番に受信されなかった、送信パケットとしてのRTPパケットであるかの判定を行うための処理が複雑になるばかりでなく、メモリなどのリソースが必要であった。
【０３２６】
さらに、例えば、再送パケットとしてのRTPパケットの数をカウントし、その値（数）を用いて、統計処理を行うことにより、伝送速度などの通信網の状態を推定し、伝送させるデータ量を制御する場合、統計処理を行うために、さらにリソースが必要となる。
【０３２７】
そこで、サーバ３０１およびクライアント３５１を、図２２および図２３に示す構成とすることで、送信パケットとしてのRTPパケットと、再送パケットとしてのRTPパケットとを容易に判別することができる。以下、図を参照して、具体的な処理を説明する。
【０３２８】
図２５のフローチャートを参照して、サーバ３０１による、RTPパケットの送信の処理を説明する。
【０３２９】
なお、ステップＳ３０１の処理乃至ステップＳ３０４の処理およびステップＳ３０７の処理乃至ステップＳ３１０の処理のそれぞれは、図１０におけるステップＳ１１の処理乃至ステップＳ１４の処理およびステップＳ１６の処理乃至ステップＳ１９の処理のそれぞれと同様なので、その説明は省略する。
【０３３０】
ステップＳ３０５において、パケタイザ３１２は、エンコーダ３１１から供給された画像データをRTP方式のパケットに格納することによって、RTPパケットを生成する。パケタイザ３１２は、生成したRTPパケットに含まれる拡張情報に“０”を設定し、拡張情報に“０”を設定したRTPパケットを通信部３１３に供給する。
【０３３１】
ステップＳ３０６において、パケタイザ３１２は、生成したRTPパケットに含まれる拡張情報に“１”を設定し、拡張情報に“１”を設定したRTPパケットを再送用バッファ３１４に供給する。
【０３３２】
ここで、拡張情報に“０”が設定されたRTPパケットは、送信パケットとしてのRTPパケットを示し、拡張情報に“１”が設定されたRTPパケットは、再送パケットとしてのRTPパケットを示す。
【０３３３】
図２６は、再送パケットとしてのRTPパケットを示す図である。なお、バージョン情報、パディング、CSRCカウント、メーカー情報、ペイロードタイプ、シーケンス番号、タイムスタンプ、SSRC識別子、およびストリーミングデータのそれぞれは、図１１における場合と同様なので、その説明は省略する。
【０３３４】
パディングに続いて、１ビットの拡張情報がRTPパケットに配置される。拡張情報は、図２６において、“Ｘ＝１”で表される。拡張情報として、“Ｘ＝１”が設定されているRTPパケットは、再送パケットとしてのRTPパケットを示す。
【０３３５】
このようにして、サーバ３０１は、RTPパケットを生成し、生成したRTPパケットを、通信網を介して、クライアント３５１あてに送信する。また、サーバ３０１は、生成したRTPパケットの拡張情報に“１”を設定し、拡張情報に“１”を設定したRTPパケットを再送パケットとして、一時的に記憶する。
【０３３６】
このように、RTPパケットに含まれる拡張情報に“０”または“１”を設定することで、クライアント３５１は、受信したRTPパケットが、送信パケットとしてのRTPパケットであるか、または再送パケットとしてのRTPパケットであるかを容易に判別することができる。
【０３３７】
なお、サーバ３０１によるRTPパケットの再送の処理は、図１２のフローチャートを参照して説明した処理と同様であるので、その説明は省略する。
【０３３８】
次に、図２７のフローチャートを参照して、クライアントプログラムを実行するクライアント３５１による、デコードの処理を説明する。なお、ステップＳ３３１の処理、ステップＳ３３４の処理、およびステップＳ３３５の処理のそれぞれは、図１４におけるステップＳ８１の処理、ステップＳ８３の処理、およびステップＳ８４の処理のそれぞれと同様なので、その説明は省略する。
【０３３９】
ステップＳ３３２において、RTP処理部３６２は、通信部３６１の受信部３８２が受信し、通信部３６１の受信部３８２から供給されたRTPパケットからシーケンス番号を抽出する。RTP処理部３６２は、抽出したシーケンス番号をNACK処理部３６７に供給する。
【０３４０】
ステップＳ３３３において、RTP処理部３６２は、通信部３６１の受信部３８２が受信し、通信部３６１の受信部３８２から供給されたRTPパケットからシーケンス番号および再送情報を抽出する。RTP処理部３６２は、抽出したシーケンス番号および再送情報をリオーダ判定部３６４に供給する。
【０３４１】
ここで、例えば、RTP処理部３６２は、RTPパケットの拡張情報に“０”が設定されている場合、RTPパケットが送信パケットであることを示す再送情報を抽出し、RTPパケットの拡張情報に“１”が設定されている場合、RTPパケットが再送パケットであることを示す再送情報を抽出する。
【０３４２】
このようにして、クライアント３５１は、サーバ３０１から送信されてきたRTPパケットを受信し、受信したRTPパケットに格納されている画像データを出力する。
【０３４３】
次に、図２８のフローチャートを参照して、クライアント３５１による、再送モードの更新の処理を説明する。
【０３４４】
なお、ステップＳ３５１の処理、ステップＳ３５５の処理、およびステップＳ３５６の処理のそれぞれは、図１５におけるステップＳ１０１の処理、ステップＳ１０５の処理、およびステップＳ１０６の処理のそれぞれと同様なので、その説明は省略する。
【０３４５】
ステップＳ３５２において、リオーダ判定部３６４は、RTP処理部３６２からシーケンス番号および再送情報が供給されたか否かを判定する。ステップＳ３５２において、RTP処理部３６２からシーケンス番号および再送情報が供給されていないと判定された場合、ステップＳ３５２に戻り、RTP処理部３６２からシーケンス番号および再送情報が供給されたと判定されるまで、判定の処理を繰り返す。
【０３４６】
一方、ステップＳ３５２において、RTP処理部３６２からシーケンス番号および再送情報が供給されたと判定された場合、ステップＳ３５３に進み、リオーダ判定部３６４は、リオーダデータベースの更新の処理を行う。なお、リオーダデータベースの更新の処理の詳細は後述するが、リオーダデータベースの更新の処理において、リオーダ判定部３６４は、リオーダデータベース３６５制御し、シーケンス番号を保持させることにより、リオーダデータベース３６５を更新する。
【０３４７】
ステップＳ３５４において、リオーダ判定部３６４は、リオーダデータベース３６５に保持されているシーケンス番号を基に、リオーダデータベース３６５が保持しているシーケンス番号が含まれているRTPパケットを受信した期間に、予め定められた回数以上のリオーダが発生したか否かを判定する。
【０３４８】
換言すれば、リオーダ判定部３６４は、リオーダデータベース３６５に保持されているシーケンス番号の数のRTPパケットにおいて、所定の回数以上のリオーダが発生しているか否かを判定する。
【０３４９】
例えば、リオーダデータベース３６５が、新しく受信した順に、１００個のシーケンス番号を保持する場合、例えば、ステップＳ３５４において、リオーダ判定部３６４は、リオーダデータベース３６５が保持している１００個のシーケンス番号のうち、リオーダが発生し、番号順に保持されなかったシーケンス番号が、５個以上あるか否かを判定することにより、リオーダデータベース３６５が保持しているシーケンス番号が含まれているRTPパケットを受信した期間に、予め定められた回数以上のリオーダが発生したか否かを判定する。
【０３５０】
ステップＳ３５４において、予め定められた回数以上のリオーダが発生したと判定された場合、ステップＳ３５５に進む。
【０３５１】
一方、ステップＳ３５４において、予め定められた回数以上のリオーダが発生していないと判定された場合、ステップＳ３５６に進む。
【０３５２】
このようにして、リオーダ判定部３６４は、リオーダデータベース３６５を更新し、リオーダデータベース３６５が保持しているシーケンス番号を基に、再送モードの設定を行う。
【０３５３】
このように、再送モードの設定を行うことにより、クライアント３５１は、リオーダにより生じる無駄な再送要求信号の送信を防止することができ、より効率良くデータを受信することができる。
【０３５４】
次に、図２９のフローチャートを参照して、図２８のステップＳ３５３の処理に対応する、リオーダデータベースの更新の処理を説明する。
【０３５５】
ステップＳ３７１において、リオーダ判定部３６４は、RTP処理部３６２から供給されたシーケンス番号および再送情報を基に、RTP処理部３６２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットであるか否かを判定する。
【０３５６】
例えば、ステップＳ３７１において、リオーダ判定部３６４は、RTP処理部３６２から供給された再送情報が、再送パケットであることを示す再送情報である場合、対応するRTPパケットは、再送されたRTPパケットであると判定し、RTP処理部３６２から供給された再送情報が、送信パケットであることを示す再送情報である場合、対応するRTPパケットは、再送されたRTPパケットでないと判定する。
【０３５７】
ステップＳ３７１において、RTP処理部３６２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットであると判定された場合、ステップＳ３７２に進み、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、RTP処理部３６２からリオーダ判定部３６４に供給されたシーケンス番号を、シーケンス番号順に保持する。そして、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、保持するシーケンス番号に対応する再送フラグをセット（例えば、“１”が設定される）する。
【０３５８】
したがって、この場合、例えば、RTP処理部３６２からシーケンス番号“６”がリオーダ判定部３６４に供給され、リオーダデータベース３６５がシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”をシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”の順番で保持しているとき、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、リオーダデータベース３６５が保持しているシーケンス番号の順番が、“１”、“２”、“３”、“４”、“５”、“６再”、および“７”の順番となるように、シーケンス番号“６”を保持する。
【０３５９】
ここで、“６再”は、シーケンス番号“６”を含むRTPパケットが、再送されたRTPパケットであることを示す。換言すれば、“６再”は、シーケンス番号“６”に対応する再送フラグがセットされていることを示す。
【０３６０】
一方、ステップＳ３７１において、RTP処理部３６２から供給されたシーケンス番号を含むRTPパケットが、再送されたRTPパケットでないと判定された場合、ステップＳ３７３に進み、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、RTP処理部３６２からリオーダ判定部３６４に供給されたシーケンス番号を、RTPパケットを受信した順（すなわち、RTP処理部３６２からリオーダ判定部３６４に供給された順）に保持する。そして、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、保持するシーケンス番号に対応する再送フラグをリセット（例えば、“０”が設定される）する。
【０３６１】
したがって、この場合、例えば、RTP処理部３６２からシーケンス番号“６”がリオーダ判定部３６４に供給され、リオーダデータベース３６５がシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”をシーケンス番号“１”、“２”、“３”、“４”、“５”、および“７”の順番で保持しているとき、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、リオーダデータベース３６５が保持しているシーケンス番号の順番が、“１”、“２”、“３”、“４”、“５”、“７”、および“６”の順番となるように、シーケンス番号“６”を保持する。
【０３６２】
ステップＳ３７４において、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、リオーダデータベース３６５を更新し、処理は終了する。
【０３６３】
例えば、リオーダデータベース３６５が、新しく受信した順に、１００個のシーケンス番号を保持する場合、リオーダ判定部３６４から新たにシーケンス番号が供給されたとき、ステップＳ３７４において、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、リオーダデータベース３６５が保持しているシーケンス番号のうち、最初に受信されたRTPパケットに含まれるシーケンス番号を消去することによって、新しく受信した順に、１００個のシーケンス番号を保持するように、リオーダデータベース３６５を更新する。
【０３６４】
したがって、例えば、６個のシーケンス番号を保持するリオーダデータベース３６５が、シーケンス番号“１”、“２”、“３”、“４”、“５”、および“６”をシーケンス番号“１”、“２”、“３”、“４”、“５”、および“６”の順番で保持しており、リオーダ判定部３６４から新たにシーケンス番号“７”が供給された場合、リオーダデータベース３６５は、リオーダ判定部３６４の制御のもと、シーケンス番号“２”、“３”、“４”、“５”、“６”、および“７”を保持するようにリオーダデータベース３６５を更新する。
【０３６５】
このようにして、クライアント３５１は、RTPパケットが受信されると、リオーダデータベース３６５を更新する。
【０３６６】
このように、リオーダデータベース３６５を更新することによって、クライアント３５１は、リオーダデータベース３６５に保持されているシーケンス番号を基に、パケットのリオーダが発生したか否かを知ることができる。
【０３６７】
次に、図３０のフローチャートを参照して、クライアント３５１による、同期モードにおける再送要求信号の送信の処理を説明する。
【０３６８】
なお、ステップＳ３９１の処理乃至ステップＳ３９５の処理、ステップＳ３９７の処理、およびステップＳ３９８の処理のそれぞれは、図１８におけるステップＳ１６１の処理乃至ステップＳ１６５の処理、ステップＳ１６７の処理、およびステップＳ１６９の処理のそれぞれと同様なので、その説明は省略する。
【０３６９】
ステップＳ３９６において、NACK処理部３６７は、NACKデータベース３６８に保持されているシーケンス番号を含むRTPパケットの再送を要求する旨の再送要求信号を生成する。そして、NACK処理部３６７は、生成した再送要求信号を通信部３６１に供給する。
【０３７０】
このようにして、クライアント３５１は、再送モードに同期モードが設定されている場合、所定の時間間隔で再送要求信号を生成し、生成した再送要求信号を、通信網を介して、サーバ３０１あてに送信する。
【０３７１】
このように、再送モードに同期モードが設定されている場合、所定の時間間隔で再送要求信号を送信するので、クライアント３５１は、リオーダにより生じる無駄な再送要求信号の送信を防止することができ、より効率良くデータを受信することができる。
【０３７２】
図３１のフローチャートを参照して、クライアント３５１による、非同期モードにおける再送要求信号の送信の処理を説明する。
【０３７３】
なお、ステップＳ４１１の処理乃至ステップＳ４１４の処理のそれぞれは、図３０におけるステップＳ３９１の処理乃至ステップＳ３９４の処理のそれぞれと同様なので、その説明は省略する。
【０３７４】
ステップＳ４１５において、NACK処理部３６７は、NACKデータベース３６８にシーケンス番号が保持されると、直ちに、NACKデータベース３６８に保持されているシーケンス番号を含むRTPパケットの再送を要求する旨の再送要求信号を生成する。そして、NACK処理部３６７は、生成した再送要求信号を通信部３６１に供給する。
【０３７５】
ステップＳ４１６において、通信部３６１の送信部３８１は、NACK処理部３６７から供給された再送要求信号を、通信網を介して、サーバ３０１あてに送信し、処理は終了する。
【０３７６】
このようにして、クライアント３５１は、再送モードに非同期モードが設定されている場合、パケットロスが発生したと判定されたとき、直ちに再送要求信号を生成し、生成した再送要求信号を、通信網を介して、サーバ３０１あてに送信する。
【０３７７】
このように、再送モードに非同期モードが設定されている場合、クライアント３５１は、リオーダが発生する可能性は低いので、パケットロスが発生したと判定されたとき、直ちに再送要求信号を送信することで、より迅速にデータを受信することができる。
【０３７８】
以上のように、クライアント３５１は、所定の数のRTPパケットにおいて、リオーダが発生した回数を基に、再送要求信号を送信する時間間隔を変化させるようにしたので、より効率よくデータを送受信することができる。また、RTPパケットに含まれる拡張情報に“１”または“０”を設定するようにしたので、クライアント３５１において、再送要求信号の送信履歴を保持することなく、送信パケットと再送パケットとを容易に判別することができる。
【０３７９】
なお、サーバ３０１において、パケタイザ３１２が、再送パケットとして、エンコーダ３１１から供給された画像データをRTP方式のパケットに格納し、拡張情報に“１”を設定したRTPパケットを生成すると説明したが、NACK処理部３１５が、RTPパケットを再送用バッファ３１４から取得したときに、拡張情報に“１”を設定するようにしてもよい。
【０３８０】
この場合、パケタイザ３１２は、エンコーダ３１１から供給された画像データをRTP方式のパケットに格納し、拡張情報に“０”を設定したRTPパケットを生成する。そして、拡張情報に“０”を設定したRTPパケットを、通信部３１３および再送用バッファ３１４に供給する。
【０３８１】
また、NACK処理部３１５は、通信部３１３から再送要求信号が供給されると、再送用バッファ３１４から要求された画像データを格納しているRTPパケットを取得する。そして、NACK処理部３１５は、取得したRTPパケットの拡張情報に“１”を設定し、拡張情報に“１”を設定したRTPパケットを、再送パケットとして、通信部３１３に供給する。
【０３８２】
すなわち、サーバ３０１は、図１０を参照して説明した処理と同様の処理を行う。また、サーバ３０１は、RTPパケットの再送の処理を行う。
【０３８３】
図３２のフローチャートを参照して、サーバ３０１による、RTPパケットの再送の処理を説明する。なお、ステップＳ４３１の処理、ステップＳ４３２の処理、およびステップＳ４３４の処理のそれぞれは、図１２におけるステップＳ４１の処理乃至ステップＳ４３の処理のそれぞれと同様なので、その説明は省略する。
【０３８４】
ステップＳ４３３において、NACK処理部３１５は、再送用バッファ３１４から取得したRTPパケットの拡張情報に“１”を設定し、拡張情報に“１”を設定したRTPパケットを、再送パケットとして、通信部３１３に供給する。
【０３８５】
このように、NACK処理部３１５が、RTPパケットを再送用バッファ３１４から取得したときに、拡張情報に“１”を設定するようにしてもよい。
【０３８６】
本発明によれば、送信装置から送信されてきたデータを受信するようにしたので、受信したデータを出力することができる。また、本発明によれば、リオーダが発生する回数を基に、再送要求信号を送信する時間間隔を変化させるようにしたので、リオーダにより生じる無駄な再送要求信号の送信を防止することができ、より効率よくデータを送受信することができる。
【０３８７】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０３８８】
この記録媒体は、図５に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク１３１（フレキシブルディスクを含む）、光ディスク１３２（CD-ROM(Compact Disc-Read Only Memory)、ＤＶＤ(Digital Versatile Disc)を含む）、光磁気ディスク１３３（ＭＤ(Mini-Disc)（商標）を含む）、若しくは半導体メモリ１３４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM１０２や、記録部１０８に含まれるハードディスクなどで構成される。
【０３８９】
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
【０３９０】
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０３９１】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０３９２】
【図１】従来のルータの構成を示すブロック図である。
【図２】パケットのリオーダを説明するための図である。
【図３】従来のストリーミングデータ配信システムを説明するタイムチャートである。
【図４】本発明に係るストリーミングデータ配信システムの一実施の形態を示す図である。
【図５】サーバの構成の例を示すブロック図である。
【図６】サーバの機能の構成を示すブロック図である。
【図７】クライアントの機能の構成を示すブロック図である。
【図８】再送モードに同期モードが設定されている場合に、クライアントが再送要求信号を送信する処理を説明するタイムチャートである。
【図９】再送モードに非同期モードが設定されている場合に、クライアントが再送要求信号を送信する処理を説明するタイムチャートである。
【図１０】RTPパケットの送信の処理を説明するフローチャートである。
【図１１】RTPパケットを説明するための図である。
【図１２】RTPパケットの再送の処理を説明するフローチャートである。
【図１３】RTT計測パケットの返信の処理を説明するフローチャートである。
【図１４】デコードの処理を説明するフローチャートである。
【図１５】再送モードの更新の処理を説明するフローチャートである。
【図１６】リオーダデータベースの更新の処理を説明するフローチャートである。
【図１７】応答の処理を説明するフローチャートである。
【図１８】同期モードにおける再送要求信号の送信の処理を説明するフローチャートである。
【図１９】NACKパケットを説明するための図である。
【図２０】非同期モードにおける再送要求信号の送信の処理を説明するフローチャートである。
【図２１】RTT計測パケットの送信の処理を説明するフローチャートである。
【図２２】サーバの機能の構成を示すブロック図である。
【図２３】クライアントの機能の構成を示すブロック図である。
【図２４】従来のストリーミングデータ配信システムを説明するタイムチャートである。
【図２５】RTPパケットの送信の処理を説明するフローチャートである。
【図２６】RTPパケットを説明するための図である。
【図２７】デコードの処理を説明するフローチャートである。
【図２８】再送モードの更新の処理を説明するフローチャートである。
【図２９】リオーダデータベースの更新の処理を説明するフローチャートである。
【図３０】同期モードにおける再送要求信号の送信の処理を説明するフローチャートである。
【図３１】非同期モードにおける再送要求信号の送信の処理を説明するフローチャートである。
【図３２】RTPパケットの再送の処理を説明するフローチャートである。
【符号の説明】
【０３９３】
８２  サーバ，  ８４  クライアント，  １０１  ＣＰＵ，  １０２  ＲＯＭ，  １０３  ＲＡＭ，  １０８  記録部，  １０９  通信部，  １３１  磁気ディスク，  １３２  光ディスク，  １３３  光磁気ディスク，  １３４  半導体メモリ，  １６２  パケタイザ，  １６４  NACK処理部，  １６５  RTT計測部，  １８１  送信部，  １８２  受信部，  ２０１  通信部，  ２０２  RTP処理部，  ２０４  リオーダ判定部，  ２０５  リオーダデータベース，  ２０６  再送モード記憶部，  ２０７  NACK処理部，  ２０８  NACKデータベース，  ２０９  送信履歴保持部，  ２１０  RTT計測部，  ２１１  RTT保持部，  ３０１  サーバ，  ３１２  パケタイザ，  ３１３  通信部，  ３１４  再送用バッファ，  ３１５  NACK処理部，  ３３１  送信部，  ３３２  受信部，  ３５１  クライアント，  ３６１  通信部，  ３６２  RTP処理部，  ３６４  リオーダ判定部，  ３６５  リオーダデータベース，  ３６６  再送モード記憶部，  ３６７  NACK処理部，  ３６８  NACKデータベース，  ３８１  送信部，  ３８２  受信部
【図１】
2006054721.tif 000003
【図２】
2006054721.tif 000004
【図３】
2006054721.tif 000005
【図４】
2006054721.tif 000006
【図５】
2006054721.tif 000007
【図６】
2006054721.tif 000008
【図７】
2006054721.tif 000009
【図８】
2006054721.tif 000010
【図９】
2006054721.tif 000011
【図１０】
2006054721.tif 000012
【図１１】
2006054721.tif 000013
【図１２】
2006054721.tif 000014
【図１３】
2006054721.tif 000015
【図１４】
2006054721.tif 000016
【図１５】
2006054721.tif 000017
【図１６】
2006054721.tif 000018
【図１７】
2006054721.tif 000019
【図１８】
2006054721.tif 000020
【図１９】
2006054721.tif 000021
【図２０】
2006054721.tif 000022
【図２１】
2006054721.tif 000023
【図２２】
2006054721.tif 000024
【図２３】
2006054721.tif 000025
【図２４】
2006054721.tif 000026
【図２５】
2006054721.tif 000027
【図２６】
2006054721.tif 000028
【図２７】
2006054721.tif 000029
【図２８】
2006054721.tif 000030
【図２９】
2006054721.tif 000031
【図３０】
2006054721.tif 000032
【図３１】
2006054721.tif 000033
【図３２】
2006054721.tif 000034