(57)【要約】【課題】ネットワークの状態の変化に対応して、効率よくデータを送受信する。【解決手段】画像送信装置は、送信レートを設定するための基準となる閾値ＴＨ１と閾値ＴＨ２（ＴＨ２＜ＴＨ１）を記憶している。画像送信装置は、送信可能レートＴｎを算出し（ステップＳ３０２）、現在設定されている送信可能レートＴが閾値ＴＨ１より大きく（ステップＳ３０３でＹＥＳ）、かつ算出した送信可能レートＴｎが閾値ＴＨ２より大きい（ステップＳ３０４でＹＥＳ）場合、送信レートの変更を行わない。これにより、送信レートを減少させるタイミングをより的確にコントロールすることが可能となる。本発明は、ネットワークに接続される電子機器に適用することができる。【選択図】      図１２
2004215199.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置との間でパケット通信を行なう情報処理装置において、
送信可能レートを算出する算出手段と、
前記算出手段により算出された前記送信可能レート以下の送信レートで、前記他の情報処理装置にパケットを送信する送信手段と、
前記送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、前記算出手段に前記送信可能レートを再計算させ、非連続でパケットロスが発生したとき、前記算出手段に前記送信可能レートを再計算させないように制御する制御手段とを備えることを特徴とする情報処理装置。
【請求項２】
他の情報処理装置との間でパケット通信を行なう情報処理装置の情報処理方法において、
送信可能レートを算出する算出ステップと、
前記算出ステップの処理により算出された前記送信可能レート以下の送信レートで、前記他の情報処理装置にパケットを送信する送信ステップと、
前記送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、前記算出ステップの処理により前記送信可能レートを再計算させ、非連続でパケットロスが発生したとき、前記算出ステップにより前記送信可能レートを再計算させないように制御する制御ステップとを含むことを特徴とする情報処理方法。
【請求項３】
他の情報処理装置との間でパケット通信を行なう情報処理装置用のプログラムであって、送信可能レートを算出する算出ステップと、
前記算出ステップの処理により算出された前記送信可能レート以下の送信レートによる、前記他の情報処理装置へのパケットの送信を制御する送信制御ステップと、
前記送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、前記算出ステップの処理により前記送信可能レートを再計算させ、非連続でパケットロスが発生したとき、前記算出ステップにより前記送信可能レートを再計算させないように制御する制御ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項４】
他の情報処理装置との間でパケット通信を行なう情報処理装置を制御するコンピュータに、
送信可能レートを算出する算出ステップと、
前記算出ステップの処理により算出された前記送信可能レート以下の送信レートによる、前記他の情報処理装置へのパケットの送信を制御する送信制御ステップと、
前記送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、前記算出ステップの処理により前記送信可能レートを再計算させ、非連続でパケットロスが発生したとき、前記算出ステップにより前記送信可能レートを再計算させないように制御する制御ステップとを実行させることを特徴とするプログラム。
【請求項５】
他の情報処理装置とパケット通信を行なう情報処理装置において、
送信可能レートを算出する算出手段と、
前記算出手段により算出された前記送信可能レート以下の送信レートで、前記他の情報処理装置にパケットを送信する送信手段と、
現在設定されている前記送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、前記算出手段に前記送信可能レートを第２の送信可能レートとして算出させ、前記第１の送信可能レートが予め設定された第１の閾値より大きく、かつ前記第２の送信可能レートが、前記第１の閾値より小さい値である第２の閾値より大きいとき、前記送信レートを変更しないように制御する制御手段とを備えることを特徴とする情報処理装置。
【請求項６】
他の情報処理装置とパケット通信を行なう情報処理装置の情報処理方法において、
送信可能レートを算出する算出ステップと、
前記算出ステップの処理により算出された前記送信可能レート以下の送信レートで、前記他の情報処理装置にパケットを送信する送信ステップと、
現在設定されている前記送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、前記算出ステップの処理により、前記送信可能レートを第２の送信可能レートとして算出させ、前記第１の送信可能レートが予め設定された第１の閾値より大きく、かつ前記第２の送信可能レートが、前記第１の閾値より小さい値である第２の閾値より大きいとき、前記送信レートを変更しないように制御する制御ステップとを含むことを特徴とする情報処理方法。
【請求項７】
他の情報処理装置とパケット通信を行なう情報処理装置用のプログラムであって、
送信可能レートを算出する算出ステップと、
前記算出ステップの処理により算出された前記送信可能レート以下の送信レートによる、前記他の情報処理装置へのパケットの送信を制御する送信制御ステップと、
現在設定されている前記送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、前記算出ステップの処理により、前記送信可能レートを第２の送信可能レートとして算出させ、前記第１の送信可能レートが予め設定された第１の閾値より大きく、かつ前記第２の送信可能レートが、前記第１の閾値より小さい値である第２の閾値より大きいとき、前記送信レートを変更しないように制御する制御ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項８】
他の情報処理装置とパケット通信を行なう情報処理装置を制御するコンピュータに、
送信可能レートを算出する算出ステップと、
前記算出ステップの処理により算出された前記送信可能レート以下の送信レートによる、前記他の情報処理装置へのパケットの送信を制御する送信制御ステップと、
現在設定されている前記送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、前記算出ステップの処理により、前記送信可能レートを第２の送信可能レートとして算出させ、前記第１の送信可能レートが予め設定された第１の閾値より大きく、かつ前記第２の送信可能レートが、前記第１の閾値より小さい値である第２の閾値より大きいとき、前記送信レートを変更しないように制御する制御ステップとを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、ネットワークの輻輳状態の変化に対応して、効率よくデータを送受信できるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
【０００２】
【従来の技術】
送信端末装置から受信端末装置に対して、インターネットなどのネットワークを経由して、連続してパケットを送信する場合、受信端末装置から送信端末装置に対して、損失した（受信されなかった）パケットを特定する情報や、パケットの受信時刻などの情報を含む確認応答が通知される。送信端末装置は、受信端末装置から受信した確認応答に応じて、送信するパケットの送信間隔やパケットサイズを変更して、ネットワークの帯域の状態に最適な送信レートで、パケットを送信する。
【０００３】
ネットワークの帯域の状態に従って、パケットの送信レートを制御するレート制御アルゴリズムは、通常、パケットロス率（送信端末装置から送信された全パケットに対する、受信端末装置に受信されずに損失したパケットの割合）や、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）を基に、ネットワークの帯域の状態を推測して、送信レートを制御している。
【０００４】
例えば、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）の送信レート制御には、ＴＣＰ−ＴａｈｏｅやＴＣＰ−Ｒｅｎｏがある。ＴＣＰはウィンドウフロー制御を行なっている。
【０００５】
ＴＣＰ−Ｔａｈｏｅの送信レート制御方式においては、まず、ウィンドウサイズが１の状態からスタートし、ウィンドウサイズを徐々に大きくしてゆく。そして、パケットロスが発生した場合、ウィンドウサイズを１に戻して、Ｓｌｏｗ  Ｓｔａｒｔ  Ｐｈａｓｅにより、再度、徐々にウィンドウサイズを大きくしてゆく。ＴＣＰ−Ｔａｈｏｅの送信レート制御方式においては、このウィンドウサイズの増減を周期的に繰り返すことにより、送信レートを制御している。
【０００６】
ＴＣＰ−Ｒｅｎｏの送信レート制御方式においても、ＴＣＰ−Ｔａｈｏｅの場合と同様、まず、ウィンドウサイズが１の状態からスタートし、ウィンドウサイズを徐々に大きくしてゆく。そして、パケットロスが発生した場合、タイムアウト前にパケットの再送（Ｆａｓｔ  Ｒｅｔｒａｎｓｍｉｔ（ＲＦＣ２５８１））が成功した場合、ウィンドウサイズをパケットロス発生直前の１／２に設定する（Ｆａｓｔ  Ｒｅｃｏｖｅｒｙ（ＲＦＣ２５８２））。図１は、ＴＣＰ−Ｒｅｎｏにおける送信レートの制御例を表している。
【０００７】
図１において、縦軸は送信レートを表し、横軸は時間を表している。図１において、時刻ｔ０のときウィンドウサイズを１として、そこから時間の経過と共に、ウィンドウサイズが大きくなっている（送信レートが高くなっている）。時刻ｔ１でパケットロスが発生し、ウィンドウサイズがパケットロス直前の約１／２に設定される。その後、また徐々にウィンドウサイズを大きくし、時刻ｔ２で再度パケットロスが発生すると、ウィンドウサイズがパケットロス直前の約１／２に設定される。その後も同様にして、ウィンドウサイズが周期的に変動する。
【０００８】
ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）の送信レート制御方式には、例えば、ＴＦＲＣ（ＴＣＰ−Ｆｒｉｅｎｄｌｙ  Ｒａｔｅ  Ｃｏｎｔｒｏｌ）がある。ＴＦＲＣにおいては、送信端末装置は、輻輳状態に対応して、理想的な送信レートでパケットを送信する（例えば、非特許文献１参照）。
【０００９】
また、送信端末装置が、受信端末装置に実時間データを送信中に、受信端末装置からデータ損失率を受信した場合、データ損失率が、予め設定された第１の閾値及び第２の閾値よりも低いときには送信レートを増加させ、データ損失率が第１の閾値よりも高く、第２の閾値よりも低いときには送信レートを変更せず、データ損失率が第１の閾値及び第２の閾値よりも高いときには送信レートを減少させるようにしたものがある（例えば、特許文献１参照）。
【００１０】
【特許文献１】
特開２００１−３２０４４０号公報（第６−８ページ、図５）
【非特許文献１】
Ｓａｌｌｙ  Ｆｌｏｙｄ，Ｍａｒｋ  Ｈａｎｄｌｅｙ，Ｊｉｔｅｎｄｒａ  Ｐａｎｄｈｙｅ  ａｎｄ  Ｊｏｅｒｇ  Ｗｉｄｍｅｒ，“Ｅｑｕａｔｉｏｎ−Ｂａｓｅｄ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  ｆｏｒ  Ｕｎｉｃａｓｔ  Ａｐｐｌｉｃａｔｉｏｎｓ”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＡＣＭＳＩＧＣＯＭＭ  ２０００，Ｍａｙ  ２０００  ｐｐ２
【００１１】
【発明が解決しようとする課題】
しかしながら、従来、パケットロスが発生すると、必要以上に送信レートを急激に低下させてしまうことがあるという課題があった。
【００１２】
例えば、パケットロスが発生した場合、ＴＣＰ−Ｔａｈｏｅでは、ウィンドウサイズが１に初期化されてしまい、ＴＣＰ−Ｒｅｎｏでは、ウィンドウサイズが、パケットロス直前の１／２のサイズに縮小されてしまう。
【００１３】
その結果、例えば、動画データや音声データを実時間送信していた場合、送信する動画や音声の品質が、急激に極端に低下してしまうことがあるという問題があった。
【００１４】
本発明は、このような状況に鑑みてなされたものであり、ネットワークの輻輳状態の変化に対応して、より効率的にデータを送受信させることを目的とする。
【００１５】
【課題を解決するための手段】
本発明の第１の情報処理装置は、送信可能レートを算出する算出手段と、算出手段により算出された送信可能レート以下の送信レートで、他の情報処理装置にパケットを送信する送信手段と、送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、算出手段に送信可能レートを再計算させ、非連続でパケットロスが発生したとき、算出手段に送信可能レートを再計算させないように制御する制御手段とを備えることを特徴とする。
【００１６】
本発明の第１の情報処理方法は、送信可能レートを算出する算出ステップと、算出ステップの処理により算出された送信可能レート以下の送信レートで、他の情報処理装置にパケットを送信する送信ステップと、送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、算出ステップの処理により送信可能レートを再計算させ、非連続でパケットロスが発生したとき、算出ステップにより送信可能レートを再計算させないように制御する制御ステップとを含むことを特徴とする。
【００１７】
本発明の第１の記録媒体のプログラムは、送信可能レートを算出する算出ステップと、算出ステップの処理により算出された送信可能レート以下の送信レートによる、他の情報処理装置へのパケットの送信を制御する送信制御ステップと、送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、算出ステップの処理により送信可能レートを再計算させ、非連続でパケットロスが発生したとき、算出ステップにより送信可能レートを再計算させないように制御する制御ステップとを含むことを特徴とする。
【００１８】
本発明の第１のプログラムは、他の情報処理装置との間でパケット通信を行なう情報処理装置を制御するコンピュータに、送信可能レートを算出する算出ステップと、算出ステップの処理により算出された送信可能レート以下の送信レートによる、他の情報処理装置へのパケットの送信を制御する送信制御ステップと、送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、算出ステップの処理により送信可能レートを再計算させ、非連続でパケットロスが発生したとき、算出ステップにより送信可能レートを再計算させないように制御する制御ステップとを実行させることを特徴とする。
【００１９】
本発明の第２の情報処理装置は、送信可能レートを算出する算出手段と、算出手段により算出された送信可能レート以下の送信レートで、他の情報処理装置にパケットを送信する送信手段と、現在設定されている送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、算出手段に送信可能レートを第２の送信可能レートとして算出させ、第１の送信可能レートが予め設定された第１の閾値より大きく、かつ第２の送信可能レートが、第１の閾値より小さい値である第２の閾値より大きいとき、送信レートを変更しないように制御する制御手段とを備えることを特徴とする。
【００２０】
本発明の第２の情報処理方法は、送信可能レートを算出する算出ステップと、算出ステップの処理により算出された送信可能レート以下の送信レートで、他の情報処理装置にパケットを送信する送信ステップと、現在設定されている送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、算出ステップの処理により、送信可能レートを第２の送信可能レートとして算出させ、第１の送信可能レートが予め設定された第１の閾値より大きく、かつ第２の送信可能レートが、第１の閾値より小さい値である第２の閾値より大きいとき、送信レートを変更しないように制御する制御ステップとを含むことを特徴とする。
【００２１】
本発明の第２の記録媒体のプログラムは、送信可能レートを算出する算出ステップと、算出ステップの処理により算出された送信可能レート以下の送信レートによる、他の情報処理装置へのパケットの送信を制御する送信制御ステップと、現在設定されている送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、算出ステップの処理により、送信可能レートを第２の送信可能レートとして算出させ、第１の送信可能レートが予め設定された第１の閾値より大きく、かつ第２の送信可能レートが、第１の閾値より小さい値である第２の閾値より大きいとき、送信レートを変更しないように制御する制御ステップとを含むことを特徴とする。
【００２２】
本発明の第２のプログラムは、他の情報処理装置とパケット通信を行なう情報処理装置を制御するコンピュータに、送信可能レートを算出する算出ステップと、算出ステップの処理により算出された送信可能レート以下の送信レートによる、他の情報処理装置へのパケットの送信を制御する送信制御ステップと、現在設定されている送信可能レートを第１の送信可能レートとして記憶すると共に、パケットロスが発生した場合、算出ステップの処理により、送信可能レートを第２の送信可能レートとして算出させ、第１の送信可能レートが予め設定された第１の閾値より大きく、かつ第２の送信可能レートが、第１の閾値より小さい値である第２の閾値より大きいとき、送信レートを変更しないように制御する制御ステップとを実行させることを特徴とする。
【００２３】
本発明の第１の情報処理装置および方法、記録媒体、並びにプログラムにおいては、送信可能レートが算出され、算出された送信可能レート以下の送信レートで、他の情報処理装置にパケットが送信され、送信可能レートが予め設定された閾値より大きい場合、連続してパケットロスが発生したとき、送信可能レートが再計算され、非連続でパケットロスが発生したとき、送信可能レートは再計算されない。
【００２４】
本発明の第２の情報処理装置および方法、記録媒体、並びにプログラムにおいては、送信可能レートが算出され、算出された送信可能レート以下の送信レートで、他の情報処理装置にパケットが送信される。また、現在設定されている送信可能レートが第１の送信可能レートとして記憶されると共に、パケットロスが発生した場合、第２の送信可能レートが算出され、第１の送信可能レートが予め設定された第１の閾値より大きく、かつ第２の送信可能レートが、第１の閾値より小さい値である第２の閾値より大きいとき、送信レートは変更されない。
【００２５】
本発明は、ネットワークに接続される電子機器に適用することができる。
【００２６】
【発明の実施の形態】
図２は、本発明を適用した情報処理システムの一実施の形態の構成を示す図である。
【００２７】
図２において、画像送信装置１１および、画像受信装置１３は、インターネットを含むネットワーク１０を介して、接続されている。画像送信装置１１は、撮像装置１２により撮像された動画を、例えばＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）やＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）２０００動画などの符号化方式により符号化し、符号化された動画データを含むデータパケットを生成し、生成したデータパケットを、ネットワーク１０を介して、画像受信装置１３に実時間送信する。また、画像送信装置１１は、画像受信装置１３より、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）やパケットロス率などの情報を含むフィードバックパケットを受信し、フィードバックパケットに含まれている情報に基づいて、データパケットの送信レートを制御する。
【００２８】
撮像装置１２は、例えば、カメラ一体型ビデオテープレコーダやデジタルスチルカメラであり、被写体を撮像し、撮像した被写体の動画データを画像送信装置１１に供給する。
【００２９】
画像受信装置１３は、画像送信装置１１から受信したデータパケットから、動画データを取得し、取得した動画データを表示装置１４に供給するとともに、ＲＴＴやパケットロス率などの情報を含むフィードバックパケットを生成し、このフィードバックパケットを、画像送信装置１１に送信する。
【００３０】
表示装置１４は、例えば、ＣＲＴ（ＣａｔｈｏｄｅＲａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）により構成され、画像受信装置１３から供給された動画データを表示する。
【００３１】
次に、図３は、画像送信装置１１の内部の構成例を表している。図３において、操作部１０１は、ユーザからの操作の入力を受け付け、受け付けられた操作に対応する操作情報を制御部１０２に通知する。制御部１０２は、予め設定されたプログラムや、操作部１０１からの操作情報に基づいて、画像送信装置１１の各部の動作を制御する。
【００３２】
映像入力部１０３は、撮像装置１２より、動画データの入力を受け付け、入力された動画データをエンコーダ１０４に供給する。
【００３３】
エンコーダ１０４は、映像入力部１０３から供給された動画データを、レート設定部１２２により設定されたフレームレート、および画質になるように、ＭＰＥＧの符号化方式に従って符号化し、符号化されたデータ（以下の説明において、符号化されたデータを符号化データと称する）を、データパケット生成部１０５に供給する。
【００３４】
データパケット生成部１０５は、エンコーダ１０４から供給された符号化データを、複数に分割してパケット化し、生成したデータパケットに、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、またはＵＤＰ／ＩＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）のパケットヘッダを付加して、データパケット送信部１０６に供給する。なお、パケットヘッダには、データパケットの個々を識別するための、シーケンス番号が含まれている。
【００３５】
データパケット送信部１０６は、データパケット生成部１０５からデータパケットが供給されると、これを、レート設定部１２２により指定されたタイミングで、ネットワーク１０を介して、画像受信装置１３に送信する。なお、データパケット送信部１０６は、データパケットを送信するとき、データパケットの送信時刻として、現在時刻をパケットヘッダに記録する。
【００３６】
フィードバックパケット受信部１０７は、画像受信装置１３より、フィードバックパケットを受信すると、受信したフィードバックパケットをレート制御部１０８のレート設定部１２２に供給する。
【００３７】
レート制御部１０８は、送信可能レート算出部１２１、およびレート設定部１２２により構成される。
【００３８】
送信可能レート算出部１２１は、レート設定部１２２から、ＲＴＴおよびパケットロス率の情報が供給されると、供給された情報を基に、データパケットの理想的な送信レートを算出し、算出した理想的送信レートをレート設定部１２２に供給する。なお、以下の説明において、送信可能レート算出部１２１により算出される理想的な送信レートを送信可能レートと称する。
【００３９】
レート設定部１２２は、適宜、フィードバックパケットから読み出したＲＴＴおよびパケットロス率の情報を、送信可能レート算出部１２１に供給し、送信可能レート算出部１２１から、送信可能レートを取得する。そして、レート設定部１２２は、送信可能レートに基づいて、実際の送信レートを設定し、設定した送信レートに基づいて、エンコーダ１０４に、符号化する画像の画質やフレームレートを所定の値に設定するように指示するとともに、データパケット送信部１０６に、データパケットを送信する間隔を所定の値に設定するように指示する。
【００４０】
次に、図４は、画像受信装置１３の内部の構成例を表している。図４において、操作部１５１は、ユーザからの操作の入力を受け付け、受け付けられた操作に対応する操作情報を制御部１５２に通知する。制御部１５２は、予め設定されたプログラムや、操作部１５１からの操作情報に基づいて、画像受信装置１３の各部の動作を制御する。
【００４１】
データパケット受信部１５３は、画像送信装置１１により送信されたデータパケットを、ネットワーク１０を介して受信し、図示せぬ内部時計から受信時刻を取得する。そして、データパケット受信部１５３は、受信したデータパケットのパケットヘッダに含まれている情報（データパケットの送信時刻およびシーケンス番号を含む）、および取得した受信時刻情報を、状態測定部１５８に供給するとともに、データパケットをデータ再構成部１５４に供給する。
【００４２】
データ再構成部１５４は、データパケット受信部１５３からデータパケットが供給されると、供給された複数のデータパケットから、元の符号化データを再構成する。すなわち、画像送信装置１１は、符号化データを送信する際、複数に分割して、それぞれをパケット化して、画像受信装置１３に送信するので、画像受信装置１３は、受信した複数のデータパケットから、元の符号化データを復元する必要がある。データ再構成部１５４は、この再構成処理を行なう。データ再構成部１５４は、符号化データを再構成した後、再構成した符号化データをデコーダ１５５に供給する。
【００４３】
デコーダ１５５は、データ再構成部１５４から、符号化データの供給を受け、供給された符号化データを復号して動画データを生成し、この動画データを記憶部１５６に供給する。
【００４４】
記憶部１５６は、デコーダ１５５から供給された動画データを、一時的に記憶（バッファリング）する。記憶部１５６に記憶された動画データは、所定のタイミングでビデオ出力部１５７により読み出される。
【００４５】
ビデオ出力部１５７は、所定のタイミングで、記憶部１５６から動画データを読み出し、読み出した動画データを表示装置１４に表示可能な画像信号に変換して、表示装置１４に供給する。
【００４６】
状態測定部１５８は、データパケット受信部１５３から、データパケットのパケットヘッダに含まれている情報（データパケットの送信時刻およびシーケンス番号を含む）、およびデータパケットの受信時刻情報を取得する。そして、状態測定部１５８は、データパケットの送信時刻および受信時刻をＲＴＴ算出部１５９に供給し、ＲＴＴ算出部１５９からＲＴＴを取得する。また、状態測定部１５８は、データパケットのシーケンス番号が、その直前に受信したデータパケットのシーケンス番号と連続しているか否かを判定することにより、データパケットの損失の有無を判定する。なお、損失したデータパケットとは、画像送信装置１１から送出されたものの、画像受信装置１３に届いていないパケットのことである。その結果、損失したデータパケットが存在した場合（パケットロスが発生した場合）、状態測定部１５８は、損失したデータパケットのシーケンス番号（以下の説明において、損失したデータパケットのシーケンス番号のことを損失パケット番号と称する）を特定する。そして、状態測定部１５８は、損失パケット番号、損失したパケットの直前に最後に受信したデータパケットのシーケンス番号と受信時刻、および損失後に始めて受信したデータパケットのシーケンス番号と受信時刻を、ロス率算出部１６０に供給し、ロス率算出部１６０から、算出されたパケットロス率を取得する。状態測定部１５８は、取得したＲＴＴやパケットロス率の情報をフィードバックパケット生成部１６１に供給する。
【００４７】
ＲＴＴ算出部１５９は、状態測定部１５８からデータパケットの送信時刻および受信時刻の情報が供給されると、これらに基づいてＲＴＴを算出し、算出されたＲＴＴを、状態測定部１５８に供給する。
【００４８】
ロス率算出部１６０は、状態測定部１５８から、損失パケット番号、損失したパケットの直前に最後に受信したデータパケットのシーケンス番号と受信時刻、および損失後に始めて受信したデータパケットのシーケンス番号と受信時刻等の情報が供給されると、供給された情報に基づいて、パケットロス率を算出し、算出されたパケットロス率を状態測定部１５８に供給する。
【００４９】
フィードバックパケット生成部１６１は、状態測定部１５８から、ＲＴＴが供給されると、このＲＴＴを情報として含むフィードバックパケットを生成し、生成したフィードバックパケットをフィードバックパケット送信部１６２に供給する。なお、状態測定部１５８から、パケットロス率の情報も供給された場合、フィードバックパケット生成部１６１は、ＲＴＴと共に、パケットロス率も含むフィードバックパケットを生成し、フィードバックパケット送信部１６２に供給する。
【００５０】
フィードバックパケット送信部１６２は、フィードバックパケット生成部１６１から、フィードバックパケットが供給されると、供給されたフィードバックパケットを、所定のタイミングで、ネットワーク１０を介して、画像送信装置１１に送信する。
【００５１】
次に、図５のフローチャートを参照して、画像送信装置１１の画像送信処理、および画像受信装置１３の画像受信処理について説明する。
【００５２】
撮像装置１２により撮像された被写体の動画データは、映像入力部１０３に入力され、映像入力部１０３から、エンコーダ１０４に供給されている。図６のステップＳ１において、画像送信装置１１のエンコーダ１０４は、映像入力部１０３から供給された動画データを符号化して、符号化データを生成し、生成された符号化データをデータパケット生成部１０５に供給する。なお、エンコーダ１０４は、レート設定部１２２により指示されたフレームレートおよび画質になるように、動画データを符号化する。
【００５３】
ステップＳ１の処理の後、ステップＳ２において、データパケット生成部１０５は、エンコーダ１０４から供給された符号化データを分割して、分割したデータそれぞれを含むデータパケットを生成し、生成したデータパケットにシーケンス番号を含むパケットヘッダを付加する。データパケット生成部１０５は、パケットヘッダを付加した後、データパケットをデータパケット送信部１０６に供給する。
【００５４】
ステップＳ２の処理の後、ステップＳ３において、データパケット送信部１０６は、データパケット生成部１０５から供給されたデータパケットを、レート設定部１２２により指定された所定のタイミングで、ネットワーク１０を介して、画像受信装置１３に送信する。なお、データパケット送信部１０６は、データパケットを送信する際に、図示せぬ内部時計から現在時刻を取得し、パケットヘッダに付加する。その後、処理はステップＳ１に戻り、ステップＳ１以降の処理が繰り返される。
【００５５】
ステップＳ１１において、画像受信装置１３のデータパケット受信部１５３は、画像送信装置１１がステップＳ３で送信したデータパケットを、ネットワーク１０を介して受信し、データ再構成部１５４に供給する。
【００５６】
画像送信装置１１は、符号化データを複数個のデータパケットに分割して送信するため、データ再構成部１５４は、分割された複数個のデータパケットが揃わないと、符号化データを再構成することができない。そこで、ステップＳ１１の後、ステップＳ１２において、データ再構成部１５４は、符号化データを再構成できるだけのデータパケットが揃ったか否かを判定し、符号化データを再構成できるだけのデータパケットが揃っていない場合、後述するステップＳ１３乃至ステップＳ１４の処理はスキップされる。なお、データ再構成部１５４は、データパケットが揃うまでの間、データパケット受信部１５３から供給されたデータパケットを記憶しておく。
【００５７】
そして、ステップＳ１２において、データ再構成部１５４が、符号化データを再構成できるだけのデータパケットが揃ったと判定した場合、処理はステップＳ１３に進む。
【００５８】
ステップＳ１３において、データ再構成部１５４は、記憶しておいた複数個のデータパケットから、分割された符号化データを抽出し、これらのデータを統合して、元の符号化データを再構成し、再構成した符号化データを、デコーダ１５５に供給する。
【００５９】
ステップＳ１３の後、ステップＳ１４において、デコーダ１５５は、データ再構成部１５４から供給された符号化データを復号し、記憶部１５６に供給し、記憶させる。
【００６０】
その後、処理はステップＳ１１に戻り、ステップＳ１１以降の処理が繰り返される。
【００６１】
以上のようにして、画像送信装置１１から画像受信装置１３に動画データが送信される。なお、画像受信装置１３のビデオ出力部１５７は、ステップＳ１４の処理により記憶部１５６に記憶された動画データを、所定のタイミングで読み出し、表示用の画像信号に変換して、表示装置１４に出力する。表示装置１４は、ビデオ出力部１５７から出力された画像信号に対応する画像を表示する。
【００６２】
なお、上述したステップＳ１乃至ステップＳ３の処理は、説明の便宜上、ステップＳ３の処理が終了後、ステップＳ１の処理が再度実行されるようになされているが、実際には、ステップＳ３の処理が終了してから、ステップＳ１の処理に戻るとは限らない。例えば、ステップＳ１において、エンコーダ１０４は、符号化データをデータパケット生成部１０５に供給した後、ステップＳ２およびステップＳ３の処理の完了を待たずに、次の動画データの符号化を実行し、データパケット生成部１０５は、生成したデータパケットをデータパケット送信部１０６に供給した後、ステップＳ３の処理の完了を待たずに、次の符号化データのパケット化を実行する。
【００６３】
また、上述したステップＳ１１乃至ステップＳ１４の処理は、説明の便宜上、ステップＳ１４の処理が終了した後（または、ステップＳ１２でＮＯの場合）、ステップＳ１１の処理が再度実行されるようになされているが、実際には、ステップＳ１４の処理が終了する前に（または、ステップＳ１２でＮＯの場合）、次のステップＳ１１以降の処理が実行されることもあり得る。例えば、ステップＳ１１において、データパケット受信部１５３は、データパケットを受信し、データ再構成部１５４に、受信したデータパケットを供給した後、ステップＳ１２乃至ステップＳ１４の処理の完了を待たずに、次のデータパケットを受信することも可能である。
【００６４】
ところで、本発明においては、画像受信装置１３から画像送信装置１１に、フィードバックパケットが送信され、このフィードバックパケットに基づいて、データパケットの送信レートが制御される。
【００６５】
そこで、次に、図６のフローチャートを参照して、画像受信装置１３のフィードバックパケット送信処理、すなわち、画像受信装置１３が、フィードバックパケットを作成し、画像送信装置１１に送信する処理について説明する。
【００６６】
画像受信装置１３は、現在時刻を取得するために、図示せぬ内部時計を内蔵しており、図６のステップＳ１０１において、状態測定部１５８は、内部時計より現在時刻ｔを取得し、これを、基準時刻ＴＭＲとして記憶する。基準時刻ＴＭＲは、一定時間の経過を測定するための変数である。ステップＳ１０１の処理の後、処理はステップＳ１０２に進む。
【００６７】
ステップＳ１０２において、状態測定部１５８は、データパケット受信部１５３から、パケットヘッダに含まれている情報（データパケットの送信時刻およびシーケンス番号を含む）、および受信時刻情報が供給されたか否かを判定することにより、データパケットを受信したか否かを判定し、パケットヘッダに含まれている情報、および受信時刻情報が供給されていない場合、データパケットを受信していなと判定し、ステップＳ１０２の処理を繰り返し実行する。そして、データパケット受信部１５３から、パケットヘッダに含まれている情報、および受信時刻情報が供給された場合、状態測定部１５８は、データパケットを受信したと判定し、処理はステップＳ１０３に進む。
【００６８】
ステップＳ１０３において、状態測定部１５８は、データパケット受信部１５３から供給されたパケットヘッダに含まれている情報から、データパケットのシーケンス番号を抽出する。ステップＳ１０３の処理の後、処理はステップＳ１０４に進む。
【００６９】
ステップＳ１０４において、状態測定部１５８は、ステップＳ１０３で抽出したシーケンス番号が、その直前に受信したデータパケットのシーケンス番号と連続しているか否かを判定することにより、パケットロスの有無を判定し、パケットロスが発生していた場合、処理はステップＳ１０５に進む。
【００７０】
ステップＳ１０５において、状態測定部１５８は、損失パケット番号、損失したパケットの直前に最後に受信したデータパケットのシーケンス番号と受信時刻、および損失後に始めて受信したデータパケットのシーケンス番号と受信時刻を、ロス率算出部１６０に供給する。ロス率算出部１６０は、状態測定部１５８から供給されたこれらの情報に基づいて、パケットロス率を算出し、算出したパケットロス率を、状態測定部１５８に供給する。なお、パケットロス率の算出方法は、ＴＦＲＣで規定された算出方法に従う。その後、処理はステップＳ１０６に進む。
【００７１】
ステップＳ１０６において、状態測定部１５８は、ステップＳ１０２で受信したと判定したデータパケットの送信時刻および受信時刻を、ＲＴＴ算出部１５９に供給する。ＲＴＴ算出部１５９は、状態測定部１５８から供給された送信時刻および受信時刻に基づいて、ＲＴＴを算出し、算出したＲＴＴを状態測定部１５８に供給する。
【００７２】
なお、ＲＴＴ算出部１５９は、例えば、データパケットの送信時刻および受信時刻から、以下の式により片道遅延時間（ＲＴＴ／２）を計算し、その結果を２倍してＲＴＴを算出する。
【００７３】
片道遅延時間（ＲＴＴ／２）＝（受信時刻）−（送信時刻）        （１）
【００７４】
なお、この処理は、画像送信装置１１と画像受信装置１３の内部時計が同期していることが前提となる。内部時計の同期方法の説明は省略するが、インターネットで一般的に用いられているＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）あるいはＮＴＰに代わる独自プロトコルを用いて、内部時計は同期させることができる。
【００７５】
ステップＳ１０７において、状態測定部１５８は、ステップＳ１０５で算出されたパケットロス率、およびステップＳ１０６で算出されたＲＴＴを、フィードバックパケット生成部１６１に供給する。フィードバックパケット生成部１６１は、状態測定部１５８から供給されたパケットロス率とＲＴＴを情報として含むフィードバックパケットを生成し、フィードバックパケット送信部１６２に供給する。ステップＳ１０７の処理の後、処理はステップＳ１１１に進む。
【００７６】
ステップＳ１０４に戻って、状態測定部１５８が、パケットロスは発生していないと判定した場合、処理はステップＳ１０８に進む。
【００７７】
ステップＳ１０８において、状態測定部１５８は、ステップＳ１０２で受信したと判定したデータパケットの送信時刻および受信時刻を、ＲＴＴ算出部１５９に供給する。ＲＴＴ算出部１５９は、状態測定部１５８から供給された送信時刻および受信時刻に基づいて、ＲＴＴを算出し、算出したＲＴＴを状態測定部１５８に供給する。その後、処理はステップＳ１０９に進む。
【００７８】
ステップＳ１０９において、状態測定部１５８は、ステップＳ１０１で基準時刻ＴＭＲを設定してから、ＲＴＴより長い時間が経過したか否かを判定する。すなわち、状態測定部１５８は、まず、ステップＳ１０１で記憶しておいたＴＭＲを読み出すとともに、内部時計より現在時刻ｔを取得し、（ｔ−ＴＭＲ）を算出する。そして、状態測定部１５８は、（ｔ−ＴＭＲ）とステップＳ１０８で算出されたＲＴＴを比較する式（２）が成り立つか否かを判定する。
【００７９】
ＲＴＴ＜（ｔ−ＴＭＲ）                                （２）
【００８０】
そして、式（２）が成立しない場合、すなわち、ステップＳ１０１で基準時刻ＴＭＲを設定してから経過した時間が、ＲＴＴ以下であると判定した場合、処理はステップＳ１０２に戻り、上述したステップＳ１０２以降の処理がくり返し実行される。
【００８１】
ステップＳ１０９において、状態測定部１５８が、式（２）は成立する、なわち、ステップＳ１０１で基準時刻ＴＭＲを設定してから経過した時間が、ＲＴＴより長いと判定した場合、処理はステップＳ１１０に進む。
【００８２】
ステップＳ１１０において、状態測定部１５８は、ステップＳ１０８で算出されたＲＴＴを、フィードバックパケット生成部１６１に供給する。フィードバックパケット生成部１６１は、状態測定部１５８から供給されたＲＴＴを情報として含むフィードバックパケットを生成し、フィードバックパケット送信部１６２に供給する。ステップＳ１１０の処理の後、処理はステップＳ１１１に進む。
【００８３】
ステップＳ１１１において、フィードバックパケット送信部１６２は、フィードバックパケット生成部１６１から供給されたフィードバックパケットを、ネットワーク１０を介して、画像送信装置１１に送信する。その後、処理はステップＳ１０１に戻り、上述したステップＳ１０１以降の処理がくり返し実行される。なお、ステップＳ１１１の処理の後、再び実行されるステップＳ１０１の処理においては、状態測定部１５８は、既に記憶されているＴＭＲを消去し、新たに現在時刻を取得して、これをＴＭＲとして記憶する。
【００８４】
以上のようにして、画像受信装置１３のフィードバックパケット送信処理が実行される。
【００８５】
画像送信装置１１は、画像受信装置１３から受信したフィードバックパケットに基づいて、データパケットの送信レートを制御する。
【００８６】
次に、図７のフローチャートを参照して、画像送信装置１１のレート制御処理、すなわち、データパケットの送信レートの制御について説明する。
【００８７】
図７のステップＳ１５１において、画像送信装置１１のレート設定部１２２は、フィードバックパケット受信部１０７からフィードバックパケットが供給されたか否かを判定することにより、フィードバックパケットが受信されたか否かを判定し、フィードバックパケット受信部１０７からフィードバックパケットが供給されるまで（フィードバックパケットが受信されるまで）、ステップＳ１５１の処理を繰り返して、待機する。そして、フィードバックパケット受信部１０７からフィードバックパケットが供給されたとき、レート設定部１２２は、フィードバックパケットを受信したと判定し、処理はステップＳ１５２に進む。
【００８８】
ステップＳ１５２において、レート設定部１２２は、受信したフィードバックパケットから、パケットロス率とＲＴＴを読み出し、読み出したパケットロス率とＲＴＴを、送信可能レート算出部１２１に供給する。送信可能レート算出部１２１は、レート設定部１２２から供給されたパケットロス率とＲＴＴをもとに、送信可能レートＴを式（３）により算出する。
【００８９】
【数１】
2004215199.tif 000003
【００９０】
式（３）において、Ｔは送信可能レート（理想的な送信レート）、ｓはパケットサイズ、ｐはパケットロス率、ｔはＴＣＰのタイムアウト時間（通常は、ＲＴＴの４倍）である。送信可能レート算出部１２１は、式（３）により、送信可能レートＴを算出した後、算出した送信可能レートＴを、レート設定部１２２に通知する。その後、処理はステップＳ１５３に進む。
【００９１】
ステップＳ１５３において、レート設定部１２２は、送信レート変更処理を実行する。図８のフローチャートを参照して、図７のステップＳ１５３の送信レート変更処理について詳細に説明する。なお、以下の説明において、実際に設定する送信レートの設定値を設定値Ｘとする。画像送信装置１１は、送信レートが設定値Ｘになるように、パケットを送信する。
【００９２】
動画データの実時間ストリーミングを行なう場合、通常、送信する動画データの最低画質と最高画質を予め設定する。従って、設定可能な送信レートにも上限値Ｒｍａｘと下限値Ｒｍｉｎが設定される。なお、勿論、Ｒｍａｘ＞Ｒｍｉｎである。
【００９３】
例えば、最高画質時のフレームのサイズが、縦×横＝１０００×１０００ピクセル、フレームレートが３０ｆｐｓ、１画素当りのデータ量が１ビットであるとすると、設定可能な送信レートの上限値Ｒｍａｘは、式（４）のようになる。
【００９４】
Ｒｍａｘ＝（１０００×１０００）×３０×１＝３０Ｍｂｐｓ        （４）
【００９５】
また、最低画質時のフレームのサイズが、縦×横＝１０００×１０００ピクセル、フレームレートが５ｆｐｓ、１画素当りのデータ量が０．５ビットであるとすると、設定可能な送信レートの下限値Ｒｍｉｎは、式（５）のようになる。
【００９６】
Ｒｍｉｎ＝（１０００×１０００）×５×０．５＝２．５Ｍｂｐｓ    （５）
【００９７】
そこで、レート設定部１２２は、設定可能な送信レートの上限値Ｒｍａｘ、および下限値Ｒｍｉｎを予め内部に記憶しており、ステップＳ２０１において、送信可能レート算出部１２１から供給された送信可能レートＴが、下限値Ｒｍｉｎより小さいか否かを判定し、送信可能レート算出部１２１から供給された送信可能レートＴが、下限値Ｒｍｉｎより小さい場合、処理はステップＳ２０２に進む。
【００９８】
ステップＳ２０２において、レート設定部１２２は、送信レートＸをＸ＝Ｒｍｉｎに設定する。ステップＳ２０２の処理を実行後、送信レート変更処理が終了する。
【００９９】
ステップＳ２０１において、レート設定部１２２が、送信可能レート算出部１２１から供給された送信可能レートＴが、下限値Ｒｍｉｎより小さくない（送信可能レート算出部１２１から供給された送信可能レートＴは、下限値Ｒｍｉｎ以上である）と判定した場合、処理はステップＳ２０３に進む。
【０１００】
ステップＳ２０３において、レート設定部１２２は、送信可能レート算出部１２１から供給された送信可能レートＴは、上限値Ｒｍａｘより大きいか否かを判定し、送信可能レート算出部１２１から供給された送信可能レートＴが、上限値Ｒｍａｘより大きい場合、処理はステップＳ２０４に進む。
【０１０１】
ステップＳ２０４において、レート設定部１２２は、送信レートＸをＸ＝Ｒｍａｘに設定する。ステップＳ２０４の処理を実行後、送信レート変更処理が終了する。
【０１０２】
ステップＳ２０３において、レート設定部１２２が、送信可能レート算出部１２１から供給された送信可能レートＴは、上限値Ｒｍａｘより大きくない（送信可能レート算出部１２１から供給された送信可能レートＴは、上限値Ｒｍａｘ以下である）と判定した場合、処理はステップＳ２０５に進む。
【０１０３】
ステップＳ２０５において、現在設定されている送信レートＸが、送信可能レートＴより大きいか否かを判定し、現在設定されている送信レートＸが、送信可能レートＴより大きい場合、処理はステップＳ２０６に進む。
【０１０４】
ステップＳ２０６において、レート設定部１２２は、送信レートＸを送信可能レートＴ以下の値に減少させる。ステップＳ２０６の処理を実行後、送信レート変更処理が終了する。
【０１０５】
ステップＳ２０５において、レート設定部１２２が、現在設定されている送信レートＸが、送信可能レートＴより大きくない（現在設定されている送信レートＸは送信可能レートＴ以下である）と判定した場合、処理はステップＳ２０７に進む。
【０１０６】
ステップＳ２０７において、レート設定部１２２は、現在設定されている送信レートＸが、送信可能レートＴより小さいか否かを判定し、現在設定されている送信レートＸが、送信可能レートＴより小さい場合、処理はステップＳ２０８に進む。
【０１０７】
ステップＳ２０８において、レート設定部１２２は、送信レートＸを送信可能レートＴ以下の範囲で、増加させる。ステップＳ２０８の処理を実行後、送信レート変更処理が終了する。
【０１０８】
ステップＳ２０７において、レート設定部１２２が、現在設定されている送信レートＸが、送信可能レートＴより小さくない（現在設定されている送信レートＸは、送信可能レートＴ以上である）と判定した場合、送信レート変更処理が終了する。
【０１０９】
以上のようにして、ステップＳ１５３の送信レート変更処理が実行される。図７に戻って、ステップＳ１５３の送信レート変更処理が実行された後、処理はステップＳ１５１に戻り、ステップＳ１５１以降の処理が繰り返し実行される。
【０１１０】
図９は、図７の送信レート設定処理により設定される送信レートの経時変化を表している。
【０１１１】
図９において、縦軸は送信レートを表し、横軸は時間を表している。また、図中、送信可能レートＴが、点線で表され、設定された送信レートＸが、実線で表されている。さらに、設定可能な送信レートの上限値Ｒｍａｘおよび下限値Ｒｍｉｎが、１点鎖線で示されている。
【０１１２】
図９において、時刻ｔ０乃至ｔ１の間は、送信可能レートＴが、下限値Ｒｍｉｎを下回っている。このとき、図８のステップＳ２０１でＹＥＳと判定され、ステップＳ２０２で送信レートＸはＸ＝Ｒｍｉｎと設定されるため、図９において、送信レートＸは、Ｒｍｉｎとなっている。
【０１１３】
また、図９において、時刻ｔ１乃至ｔ２の間は、送信可能レートＴは、下限値Ｒｍｉｎと上限値Ｒｍａｘの間にあり、Ｘ＜Ｔである。従って、図８のステップＳ２０１でＮＯと判定され、ステップＳ２０３でＮＯと判定され、ステップＳ２０５でＮＯと判定され、ステップＳ２０７でＹＥＳと判定され、ステップＳ２０８で送信レートＸが、送信可能レートＴ以下の範囲で増加される。図９において、時刻ｔ３乃至ｔ４の間、時刻ｔ５乃至ｔ６の間、および時刻ｔ７以降も時刻ｔ１乃至ｔ２の間と同様の処理により、送信レートＸは、送信可能レートＴ以下の範囲で増加される。
【０１１４】
また、図９において、時刻ｔ２乃至ｔ３の間は、送信可能レートＴは、上限値Ｒｍａｘを上回っている。従って、図８のステップＳ２０１でＮＯと判定され、ステップＳ２０３でＹＥＳと判定され、ステップＳ２０４で、送信レートＸは、Ｘ＝Ｒｍａｘに設定される。図９において、時刻ｔ４乃至ｔ５の間、時刻ｔ６乃至ｔ７の間も時刻ｔ２乃至ｔ３の間と同様の処理により、送信レートＸは、上限値Ｒｍａｘに設定される。
【０１１５】
また、図９の時刻ｔ３において、送信可能レートＴは、上限値Ｒｍａｘより大きい値から、Ｒｍａｘより小さい値に減少している。このとき、図８のステップＳ２０１でＮＯと判定され、ステップＳ２０３でＮＯと判定され、ステップＳ２０５でＹＥＳと判定され、ステップＳ２０６で、送信レートＸは、送信可能レートＴ以下の値に減少させられる。図９において、時刻ｔ５および時刻ｔ７においても、時刻ｔ３と同様の処理により、送信レートＸは、送信可能レートＴ以下の値に設定される。
【０１１６】
ところで、画像送信装置１１は、図７に示したような送信レート設定処理により送信レートを設定することもできるが、図７以外の送信レート設定処理により送信レートを設定することもできる。次に、図１０のフローチャートを参照して、図７とは異なる送信レート設定処理について説明する。
【０１１７】
図１０のステップＳ２５１において、レート設定部１２２は、０または１に設定可能なステイタスを０に設定して記憶する。その後、処理はステップＳ２５２に進む。
【０１１８】
ステップＳ２５２において、レート設定部１２２は、フィードバックパケット受信部１０７を監視し、フィードバックパケットを受信したか否かを判定し、フィードバックパケットを受信するまで、ステップＳ２５２の処理を繰り返し実行して待機する。そして、フィードバックパケットを受信したとき、処理はステップＳ２５３に進む。
【０１１９】
レート設定部１２２は、設定可能な送信レートの上限値Ｒｍａｘより大きな値の閾値ＴＨを予め記憶しており、ステップＳ２５３において、現在記憶している送信可能レートＴが閾値ＴＨより大きいか否かを判定し、現在記憶している送信可能レートＴが閾値ＴＨより大きくない場合（現在記憶している送信可能レートＴが閾値ＴＨ以下である場合）、処理はステップＳ２５４に進む。なお、送信レート設定処理を開始当初、レート設定部１２２は、送信可能レートＴを記憶していないので、ステップＳ２５３において、ＮＯと判定し、処理はステップＳ２５４に進む。
【０１２０】
ステップＳ２５４において、レート設定部１２２は、受信したフィードバックパケットから、パケットロス率とＲＴＴを読み出し、読み出したパケットロス率とＲＴＴを、送信可能レート算出部１２１に供給する。送信可能レート算出部１２１は、レート設定部１２２から供給されたパケットロス率とＲＴＴをもとに、送信可能レートＴを式（３）により算出する。送信可能レート算出部１２１は、式（３）により、送信可能レートＴを算出した後、算出した送信可能レートＴを、レート設定部１２２に通知する。レート設定部１２２は、送信可能レート算出部１２１から通知された送信可能レートＴを記憶する。なお、以前算出された送信可能レートＴが既に記憶されていた場合、レート設定部１２２は、それを消去し、新たに算出された送信可能レートＴを記憶する。その後、処理はステップＳ２５５に進む。
【０１２１】
ステップＳ２５５において、レート設定部１２２は、送信レート変更処理を実行する。ステップＳ２５５の送信レート変更処理は、図８で説明した送信レート変更処理と同様であるので、説明を省略する。
【０１２２】
ステップＳ２５５の送信レート変更処理の後、処理はステップＳ２５６に進む。
【０１２３】
ステップＳ２５６において、レート設定部１２２は、ステイタスを０に設定して記憶する。なお、既に０に設定されていた場合、レート設定部１２２は、そのままのステイタスを保つ。ステップＳ２５６の処理の後、処理はステップＳ２５２に戻り、ステップＳ２５２以降の処理を繰り返し実行する。
【０１２４】
ステップＳ２５３において、レート設定部１２２が、現在記憶している送信可能レートＴは、閾値ＴＨより大きいと判定した場合、処理はステップＳ２５７に進む。
【０１２５】
ステップＳ２５７において、レート設定部１２２は、受信したフィードバックパケットにパケットロス率が含まれているか否かを判定することにより、フィードバックパケットは、パケットロスの通知であるか否かを判定し、フィードバックパケットにパケットロス率が含まれていた場合（パケットロスの通知であった場合）、処理はステップＳ２５８に進む。
【０１２６】
ステップＳ２５８において、レート設定部１２２は、ステイタスが０か否かを判定し、ステイタスが０ではない場合（ステイタスが１の場合）、処理はステップＳ２５４に進み、上述したステップＳ２５４以降の処理を繰り返し実行する。
【０１２７】
ステップＳ２５８において、レート設定部１２２が、ステイタスが０であると判定した場合、処理はステップＳ２５９に進む。
【０１２８】
ステップＳ２５９において、レート設定部１２２は、ステイタスを１に設定して記憶する。その後、処理はステップＳ２５２に戻り、上述したステップＳ２５２以降の処理を繰り返し実行する。
【０１２９】
ステップＳ２５７において、レート設定部１２２が、受信したフィードバックパケットにパケットロス率が含まれていないと判定した場合（パケットロスの通知ではないと判定した場合）、処理はステップＳ２６０に進む。
【０１３０】
ステップＳ２６０において、レート設定部１２２は、ステイタスを０に設定して記憶する。その後、処理はステップＳ２５２に戻り、上述したステップＳ２５２以降の処理を繰り返し実行する。
【０１３１】
以上の処理により、送信可能レートＴが、閾値ＴＨより大きい値である場合、連続的にパケットロスが発生したときのみ、送信レートを減少させることが可能となる。
【０１３２】
すなわち、連続的にパケットロスが発生した場合、以下のようになる。まず、１回目のパケットロスが発生すると、画像受信装置１３から画像送信装置１１に、パケットロス率を含むフィードバックパケットが受信される。そこで、レート設定部１２２は、ステップＳ２５２でＹＥＳと判定し、ステップＳ２５３でＹＥＳと判定し、ステップＳ２５７でＹＥＳと判定し、ステップＳ２５９でステイタスを１に設定する。その後、連続的に２回目のパケットロスが発生した場合、画像受信装置１３から送信されるフィードバックパケットにはパケットロス率が含まれている。従って、このフィードバックパケットを受信した場合、レート設定部１２２は、ステップＳ２５２でＹＥＳと判定し、ステップＳ２５３でＹＥＳと判定し、ステップＳ２５７でＹＥＳと判定し、ステップＳ２５８でＮＯと判定し、ステップＳ２５４で送信可能レートＴを算出し、ステップＳ２５５で送信レート変更処理を実行し、ステップＳ２５６でステイタスを０に戻す。
【０１３３】
これに対して、非連続で１回だけパケットロスが発生したとき、画像受信装置１３から画像送信装置１１に、パケットロス率を含むフィードバックパケットが受信される。そこで、レート設定部１２２は、ステップＳ２５２でＹＥＳと判定し、ステップＳ２５３でＹＥＳと判定し、ステップＳ２５７でＹＥＳと判定し、ステップＳ２５９でステイタスを１に設定する。非連続で１回だけパケットロスが発生した場合、次に画像受信装置１３から送信されるフィードバックパケットにはパケットロス率は含まれていない。従って、このフィードバックパケットを受信した場合、レート設定部１２２は、ステップＳ２５２でＹＥＳと判定し、ステップＳ２５３でＹＥＳと判定し、ステップＳ２５７でＮＯと判定し、ステップＳ２６０で、ステイタスを０に設定する。
【０１３４】
以上のような処理により、連続的にパケットロスの通知があった場合のみ、送信レート変更処理が実行され、非連続でパケットロスの通知があっても、送信レート変更処理は実行されない。これにより、パケットロスが発生した場合、必要以上の送信レートの低下を防止することが可能となる。結果的に、より効率的に、データの送信を行なうことが可能となる。
【０１３５】
図１１は、図１０の送信レート設定処理により設定される送信レートの経時変化を表している。
【０１３６】
図１１において、縦軸は送信レートを表し、横軸は時間を表している。また、図中、送信可能レートＴが、点線で表され、設定された送信レートＸが、実線で表されている。さらに、設定可能な送信レートの上限値Ｒｍａｘおよび下限値Ｒｍｉｎ、並びに閾値ＴＨが１点鎖線で示されている。
【０１３７】
図１１において、時刻ｔ０乃至ｔ１の間は、送信可能レートＴが、下限値Ｒｍｉｎを下回っている。このとき、画像受信装置１３から画像送信装置１１にフィードバックパケットが受信されると、図１０のステップＳ２５３でＮＯと判定され、ステップＳ２５４で送信可能レートＴが算出され、ステップＳ２５５の処理の中において、図８のステップＳ２０１でＹＥＳと判定され、ステップＳ２０２で送信レートＸはＸ＝Ｒｍｉｎと設定されるため、図１１において、送信レートＸは、Ｒｍｉｎとなっている。
【０１３８】
図１１において、時刻ｔ１乃至ｔ２の間は、送信可能レートＴは、下限値Ｒｍｉｎと上限値Ｒｍａｘの間にあり、Ｘ＜Ｔである。従って、画像受信装置１３から画像送信装置１１にフィードバックパケットが受信されると、図１０のステップＳ２５３でＮＯと判定され、ステップＳ２５４で送信可能レートＴが算出され、ステップＳ２５５の処理の中において、図８のステップＳ２０１でＮＯと判定され、ステップＳ２０３でＮＯと判定され、ステップＳ２０５でＮＯと判定され、ステップＳ２０７でＹＥＳと判定され、ステップＳ２０８で送信レートＸが、送信可能レートＴ以下の範囲で増加される。
【０１３９】
図１１において、時刻ｔ２乃至ｔ３の間は、送信可能レートＴは、上限値Ｒｍａｘと閾値ＴＨの間にある。従って、画像受信装置１３から画像送信装置１１にフィードバックパケットが受信されると、図１０のステップＳ２５３でＮＯと判定され、ステップＳ２５４で送信可能レートＴが算出され、ステップＳ２５５の処理の中において、図８のステップＳ２０１でＮＯと判定され、ステップＳ２０３でＹＥＳと判定され、ステップＳ２０４で、送信レートＸがＸ＝Ｒｍａｘに設定される。
【０１４０】
図１１において、時刻ｔ３乃至ｔ８の間は、送信可能レートＴは、閾値ＴＨより大きい。従って、図１０のステップＳ２５３で、ＹＥＳと判定されるため、送信可能レートＴは更新されない。また、図１１の時刻ｔ４、および時刻ｔ５に、それぞれ、１回パケットロスが発生しているが、このとき送信レートの変更は行われない。これに対して、時刻ｔ６およびｔ７で、連続的にパケットロスの通知が受信された場合、送信可能レートＴが再計算され、送信レートＸが送信可能レートＴ以下になるように設定される。
【０１４１】
ところで、図１０の送信レート設定処理においては、閾値ＴＨを１つだけ設けて、閾値ＴＨに基づいて、送信レートを設定していたが、閾値を２つ設定して、送信レートを設定するようにすることもできる。
【０１４２】
次に、図１２のフローチャートを参照して、閾値を２つ設定した場合の送信レート設定処理について説明する。なお、以下の説明において、２つの閾値のうち１つ目の閾値ＴＨ１を、設定可能な送信レートの上限値Ｒｍａｘより大きい値とし、もう１つの閾値ＴＨ２を、上限値Ｒｍａｘと下限値Ｒｍｉｎの間の値とする。レート設定部１２２は、予め、これら閾値ＴＨ１および閾値ＴＨ２を記憶している。
【０１４３】
図１２のステップＳ３０１において、レート設定部１２２は、フィードバックパケット受信部１０７を監視し、フィードバックパケットを受信したか否かを判定し、フィードバックパケットを受信するまで、ステップＳ３０１の処理を繰り返し実行して待機する。そして、フィードバックパケットを受信したとき、処理はステップＳ３０２に進む。
【０１４４】
ステップＳ３０２において、レート設定部１２２は、受信したフィードバックパケットから、パケットロス率とＲＴＴを読み出し、読み出したパケットロス率とＲＴＴを、送信可能レート算出部１２１に供給する。送信可能レート算出部１２１は、レート設定部１２２から供給されたパケットロス率とＲＴＴをもとに、送信可能レートＴを式（３）により算出する。送信可能レート算出部１２１は、式（３）により、送信可能レートＴを算出した後、算出した送信可能レートＴを、レート設定部１２２に通知する。レート設定部１２２は、通知された送信可能レートＴを記憶する。
【０１４５】
なお、図１２の送信レート設定処理を開始当初、レート設定部１２２は、送信可能レートＴを記憶していないが、一旦、送信可能レートが算出されると、レート設定部１２２は、算出された送信可能レートＴを記憶する。レート設定部１２２は、送信可能レートを記憶する２つの領域を備えており、１つ目の領域には、送信レートＸの設定の基準として採用されている送信可能レートＴが記憶され、２つ目の領域には、ステップＳ３０２で算出された直後の送信可能レートＴが記憶される。以下の説明において、上記の１つ目の領域に記憶される送信可能レートを送信可能レートＴと区別するために、２つ目の領域に記憶される送信可能レートを送信可能レートＴｎと称する。
【０１４６】
図１２の送信レート設定処理の開始当初、上記の２つの領域には、ステップＳ３０２で算出された送信レートが記憶される（２つの領域には同じ値が記憶される）。そして、次回、ステップＳ３０２により送信可能レートＴｎが算出された場合、レート設定部１２２は、１つ目の領域に既に記憶されている送信可能レートＴはそのまま保持し、新たに算出された送信可能レートＴｎを２つ目の領域に記憶する。
【０１４７】
ステップＳ３０２の処理の後、処理はステップＳ３０３に進む。
【０１４８】
ステップＳ３０３において、レート設定部１２２は、送信可能レートＴが閾値ＴＨ１より大きいか否かを判定し、送信可能レートＴが閾値ＴＨ１より大きい場合、処理はステップＳ３０４に進む。
【０１４９】
ステップＳ３０４において、レート設定部１２２は、送信可能レートＴｎが閾値ＴＨ２より大きいか否かを判定し、送信可能レートＴｎが閾値ＴＨ２より大きい場合、処理はステップＳ３０１に戻り、上述したステップＳ３０１以降の処理が繰り返し実行される。従って、この場合、送信レートは変更されない。
【０１５０】
ステップＳ３０４において、レート設定部１２２が、送信可能レートＴｎは閾値ＴＨ２より大きくないと判定した場合（送信可能レートＴｎが閾値ＴＨ２以下であると判定した場合）、処理はステップＳ３０５に進む。
【０１５１】
ステップＳ３０３において、レート設定部１２２が、送信可能レートＴが閾値ＴＨ１より大きくない（送信可能レートＴは閾値ＴＨ１以下である）と判定した場合、処理はステップＳ３０５に進む。
【０１５２】
ステップＳ３０５において、レート設定部１２２は、ステップＳ３０２で算出された送信可能レートＴｎを、送信可能レートＴとして設定する。すなわち、レート設定部１２２は、２つ目の領域に記憶されている送信可能レートＴｎの値を、１つ目の領域に送信可能レートＴとして記憶させる。その後、処理はステップＳ３０６に進む。
【０１５３】
ステップＳ３０６において、レート設定部１２２は、送信レート変更処理を実行する。ステップＳ３０６の送信レート変更処理の詳細は、図８のフローチャートを参照して説明した通りである。なお、レート設定部１２２は、１つ目の領域に記憶された送信可能レートＴを利用して、図８のフローチャートの処理を実行する。ステップＳ３０６の送信レート変更処理の後、処理はステップＳ３０１に戻り、上述したステップＳ３０１以降の処理が繰り返し実行される。
【０１５４】
以上のようにして、送信レート設定処理が実行される。
【０１５５】
図１２の送信レート設定処理においては、送信レートＸの設定の基準として採用されている送信可能レートＴが閾値ＴＨ１以下の場合、および送信可能レートＴが閾値ＴＨ１より大きく、かつ、算出された送信可能レートＴｎが閾値ＴＨ２以下の場合、送信レート変更処理が実行され、送信可能レートＴが閾値ＴＨ１よりも大きく、かつ、算出された送信可能レートＴｎが閾値ＴＨ２よりも大きい場合、送信レート変更処理を実行しない。
【０１５６】
以上のように、送信レートＸの設定の基準として採用されている送信可能レートＴが、閾値ＴＨ１よりも大きく、かつ、算出された送信可能レートＴｎが、閾値ＴＨ２よりも大きい場合、送信レートの変更を行なわないようにすることにより、パケットロスが発生した場合、必要以上に送信レートを低下させることを防止することができる。
【０１５７】
図１３は、図１２の送信レート設定処理により設定される送信レートの経時変化を表している。
【０１５８】
図１３の時刻ｔ０乃至ｔ１の間において、送信可能レートＴは、下限値Ｒｍｉｎを下回っている。従って、送信レートＸはＸ＝Ｒｍｉｎと設定される。
【０１５９】
図１３の時刻ｔ１乃至ｔ２の間において、送信可能レートＴは、下限値Ｒｍｉｎと上限値Ｒｍａｘの間にあり、送信レートＸが、送信可能レートＴ以下の範囲で増加される。
【０１６０】
図１３の時刻ｔ２乃至ｔ７の間において、送信可能レートＴは、上限値Ｒｍａｘを上回っている。従って、送信レートＸがＸ＝Ｒｍａｘに設定される。
【０１６１】
また、図１３の時刻ｔ３乃至ｔ７の間において、送信可能レートＴは、閾値ＴＨ１を上回っている。従って、時刻ｔ４、ｔ５、およびｔ６においてパケットロスが発生した場合、送信可能レートＴｎが算出され、閾値ＴＨ２と比較される。
その結果、時刻ｔ４およびｔ５においては、図１３に点線の矢印で図示されているように、送信可能レートＴｎが閾値ＴＨ２より大きい値であるため、送信可能レートＴは新しい値に更新されないが、時刻ｔ６においては、図１３の点線の矢印で示されているように、送信可能レートＴｎが閾値ＴＨ２より小さい値であるため、送信可能レートＴが更新され、更新された送信可能レートに従って、送信レートＸの値も更新される。
【０１６２】
以上のように、本発明によれば、偶発したパケットロスに対しては、送信レートを低下させないようにすることができる。そのため、より効率的に、データを通信することが可能となる。従って、例えば、動画のストリーミングなどにおいて、送信する動画の画質が急激に低下することを防止することが可能となる。
【０１６３】
なお、以上の説明においては、撮像装置１２で撮像された動画を、画像送信装置１１から画像受信装置１２に送信する場合を例にして説明したが、画像送信装置１１から画像受信装置１２に送信する動画は、予め記録媒体に記録されていても良い。
【０１６４】
上述した一連の処理は、ハードウェアにより実行させることもできるし、上述したようにソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体等からインストールされる。
【０１６５】
図１４は、このような処理を実行するパーソナルコンピュータ４００の内部構成例を示す図である。パーソナルコンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２に記憶されているプログラムに従って各種の処理を実行する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３には、ＣＰＵ４０１が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース４０５は、キーボードやマウスから構成される入力部４０６が接続され、入力部４０６に入力された信号をＣＰＵ４０１に出力する。また、入出力インタフェース４０５には、ディスプレイやスピーカなどから構成される出力部４０７も接続されている。
【０１６６】
さらに、入出力インタフェース４０５には、ハードディスクなどから構成される記憶部４０８、および、インターネットなどのネットワーク１０を介して他の装置とデータの通信を行う通信部４０９も接続されている。ドライブ４１０は、磁気ディスク４２１、光ディスク４２２、光磁気ディスク４２３、半導体メモリ４２４などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
【０１６７】
記録媒体は、図１４に示されるように、パーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク４２１（フレキシブルディスクを含む）、光ディスク４２２（ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）を含む）、光磁気ディスク４２３（ＭＤ（Ｍｉｎｉ−Ｄｉｓｃ）（登録商標）を含む）、若しくは半導体メモリ４２４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているＲＯＭ４０２や記憶部４０８が含まれるハードディスクなどで構成される。
【０１６８】
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１６９】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１７０】
【発明の効果】
以上のように、第１の本発明によれば、ネットワークを介して、情報を送信することができる。また、第１の本発明によれば、送信レートを減少させるタイミングを、より適切にコントロールし、必要以上の送信レートの低下を防ぐことができる。その結果、ストリーミング中の画像の画質が、急激に低下することを防ぐことが可能となる。
【０１７１】
第２の本発明によれば、ネットワークを介して、情報を送信することができる。また、第２の本発明によれば、送信レートを減少させるタイミングを、より適切にコントロールし、必要以上の送信レートの低下を防ぐことができる。その結果、ストリーミング中の画像の画質が、急激に低下することを防ぐことが可能となる。
【図面の簡単な説明】
【図１】従来のパケット通信における送信レートの制御を説明するための図である。
【図２】本発明を適用した情報処理システムの構成例を示すブロック図である。
【図３】画像送信装置の構成例を示すブロック図である。
【図４】画像受信装置の構成例を示すブロック図である。
【図５】画像送信装置の画像送信処理、および画像受信装置の画像受信処理を説明するフローチャートである。
【図６】画像受信装置のフィードバックパケット送信処理を説明するフローチャートである。
【図７】画像送信装置の送信レート設定処理を説明するフローチャートである。
【図８】図７のステップＳ１５３、図１０のステップＳ２５５、および図１２のステップＳ３０６の処理を詳細に説明するフローチャートである。
【図９】図７のフローチャートの送信レート設定処理による送信レートの制御を説明するための図である。
【図１０】画像送信装置の送信レート設定処理を説明する他のフローチャートである。
【図１１】図１０のフローチャートの送信レート設定処理による送信レートの制御を説明するための図である。
【図１２】画像送信装置の送信レート設定処理を説明するさらに他のフローチャートである。
【図１３】図１２のフローチャートの送信レート設定処理による送信レートの制御を説明するための図である。
【図１４】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【符号の説明】
１０  ネットワーク，  １１  画像送信装置，  １２  撮像装置，  １３  画像受信装置，  １４  表示装置，  １０１  操作部，  １０２  制御部，  １０３  映像入力部，  １０４  エンコーダ，  １０５  データパケット生成部，  １０６  データパケット送信部，  １０７  フィードバックパケット受信部，  １０８  レート制御部，  １２１  送信可能レート算出部，  １２２  レート設定部，  １５１  操作部，  １５２  制御部，  １５３  データパケット受信部，  １５４  データ再構成部，  １５５  デコーダ，  １５６  記憶部，  １５７  ビデオ出力部，  １５８  状態測定部，  １５９  ＲＴＴ算出部，  １６０  ロス率算出部，  １６１  フィードバックパケット生成部，  １６２  フィードバックパケット送信部，  ４０１  ＣＰＵ，  ４２１  磁気ディスク，  ４２２  光ディスク，  ４２３  光磁気ディスク，  ４２４  半導体メモリ
【図１】
2004215199.tif 000004
【図２】
2004215199.tif 000005
【図３】
2004215199.tif 000006
【図４】
2004215199.tif 000007
【図５】
2004215199.tif 000008
【図６】
2004215199.tif 000009
【図７】
2004215199.tif 000010
【図８】
2004215199.tif 000011
【図９】
2004215199.tif 000012
【図１０】
2004215199.tif 000013
【図１１】
2004215199.tif 000014
【図１２】
2004215199.tif 000015
【図１３】
2004215199.tif 000016
【図１４】
2004215199.tif 000017