(57)【要約】【課題】再送処理をより効率化させることを目的とする。【解決手段】他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器であって、動画映像のフレームのスタートと、エンドとを検出し、動画映像のフレームのスタートを検出したことを示す情報と、動画映像のフレームのエンドを検出したことを示す情報とを、下位レイヤーに係る、無線ＬＡＮのアクセス制御を行う通信手段に通知する通知手段を有し、通信手段は、通知手段からの通知に応じて、無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御することによって課題を解決する。【選択図】図１
2008079150.tif 000002
【特許請求の範囲】
【請求項１】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器であって、
動画映像のフレームのスタートと、エンドとを検出し、前記動画映像のフレームのスタートを検出したことを示す情報と、動画映像のフレームのエンドを検出したことを示す情報とを、下位レイヤーに係る、前記無線ＬＡＮのアクセス制御を行う通信手段に通知する通知手段を有し、
前記通信手段は、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御することを特徴とする通信機器。
【請求項２】
前記通信手段は、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＢｌｏｃｋＡｃｋを制御することを特徴とする請求項１に記載の通信機器。
【請求項３】
前記通知手段は、ＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）のオプションヘッダーに、前記動画映像のフレームのスタート又はエンドを検出したことを示す情報を記述し、前記通信手段に通知することを特徴とする請求項１又は２に記載の通信機器。
【請求項４】
前記通知手段は、前記動画映像のフレームのスタート又はエンドを検出すると、イベントとして、前記動画映像のフレームのスタート又はエンドを検出したことを示す情報を前記通信手段に通知することを特徴とする請求項１又は２に記載の通信機器。
【請求項５】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器であって、
動画映像の伝送時において、予め設定された送信レートより高い送信レートの場合は、前記動画映像の再送を実行せず、前記予め設定された送信レートより低い送信レートの場合は、前記動画映像の再送を実行することを特徴とする通信機器。
【請求項６】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器であって、
動画映像のマクロブロックのスタートと、エンドとを検出し、前記動画映像のマクロブロックのスタートを検出したことを示す情報と、動画映像のフレームのエンドを検出したことを示す情報とを、下位レイヤーに係る、前記無線ＬＡＮのアクセス制御を行う通信手段に通知する通知手段を有し、
前記通信手段は、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御することを特徴とする通信機器。
【請求項７】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器であって、
動画映像のリシンクマーカーの位置を検出し、前記動画映像のリシンクマーカーの位置を検出したことを示す情報を、下位レイヤーに係る、前記無線ＬＡＮのアクセス制御を行う通信手段に通知する通知手段を有し、
前記通信手段は、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御することを特徴とする通信機器。
【請求項８】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器におけるデータ転送方法であって、
通知手段が、動画映像のフレームのスタートと、エンドとを検出し、前記動画映像のフレームのスタートを検出したことを示す情報と、動画映像のフレームのエンドを検出したことを示す情報とを、下位レイヤーに係る、前記無線ＬＡＮのアクセス制御を行う通信手段に通知する通知ステップと、
前記通信手段が、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御する制御ステップと、
を有することを特徴とするデータ転送方法。
【請求項９】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器におけるデータ転送方法であって、
動画映像の伝送時において、予め設定された送信レートより高い送信レートの場合は、前記動画映像の再送を実行せず、前記予め設定された送信レートより低い送信レートの場合は、前記動画映像の再送を実行することを特徴とするデータ転送方法。
【請求項１０】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器におけるデータ転送方法であって、
通知手段が、動画映像のマクロブロックのスタートと、エンドとを検出し、前記動画映像のマクロブロックのスタートを検出したことを示す情報と、動画映像のフレームのエンドを検出したことを示す情報とを、下位レイヤーに係る、前記無線ＬＡＮのアクセス制御を行う通信手段に通知する通知ステップと、
前記通信手段が、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御する制御ステップと、
を有することを特徴とするデータ転送方法。
【請求項１１】
他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器におけるデータ転送方法であって、
通知手段が、動画映像のリシンクマーカーの位置を検出し、前記動画映像のリシンクマーカーの位置を検出したことを示す情報を、下位レイヤーに係る、前記無線ＬＡＮのアクセス制御を行う通信手段に通知する通知ステップと、
前記通信手段が、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御する制御ステップと、
を有することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信機器及びデータ転送方法に関する。
【背景技術】
【０００２】
従来の無線ＬＡＮシステムにおいて、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）向上のためのアクセス制御の仕様が策定されている（例えば、非特許文献１参照）。また、特許文献１は、ＩＥＥＥ８０２．１１ｅ規格のＱｏＳについて言及している。更に、特許文献２、特許文献３において、スループットを向上させるためのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）フレームの送信方式が提案されている。
【０００３】
なお、ＢｌｏｃｋＡｃｋに関しては、非特許文献１のＩＥＥＥ８０２．１１ｅ規格で定められている仕様である。
【０００４】
【特許文献１】特開２００２−３１４５４６号公報
【特許文献２】特開２００５−２５２８９７号公報
【特許文献３】特開２００４−３３６７３０号公報
【非特許文献１】無線ＬＡＮのためのＩＥＥＥ８０２．１１ｅ規格  Ｍｅｄｉｕｍ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ  Ｅｎｈａｎｃｅｍｅｎｔｓ
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のＭＡＣフレーム送信方式を使用する場合、受信側では、正常にＭＡＣフレームを受信すると肯定応答（Ａｃｋ）を送信する。また、受信側では、受信したＭＡＣフレームがエラーチェック等で正常でない場合や、一定時間が経過しても受信できない場合には、否定応答（Ｎａｃｋ）を送信する。
【０００６】
送信側では、Ａｃｋを受信すると、次のＭＡＣフレームの送信処理に移り、Ｎａｃｋの場合には、再送処理を行う。指定回数の再送を行っても、送信に成功しない場合には、送信をあきらめ、上位レイヤーに対して、送信がエラー終了したことを通知し、上位レイヤーでの再送処理を行う。
また、受信側がＮａｃｋを返さない或いは送信側が何らかの理由でＮａｃｋを受信できない場合もある。この場合には、送信側は一定時間が経過してもＡｃｋが受信されなければ、再送処理を行う。
【０００７】
このようなＭＡＣフレーム送信を行うシステムにおいて、動画等のメディアデータを伝送した場合、伝送路において、ＭＡＣフレームが壊れたり、伝送遅延などのエラーが発生したりすると、ＭＡＣレベルでの再送処理を行う。しかしながら、受信側で受信した動画データを表示する処理を行う場合には、一定時間内にデータを受信できないと表示できない。このため、再送処理を行っても、受信側では既に使うことができない場合もあり、効率が悪い再送方式となっていた。
【０００８】
本発明はこのような問題点に鑑みなされたもので、再送処理をより効率化させることを目的とする。
【課題を解決するための手段】
【０００９】
そこで、本発明は、他の通信機器に対して無線ＬＡＮを介してデータを転送する通信機器であって、動画映像のフレームのスタートと、エンドとを検出し、前記動画映像のフレームのスタートを検出したことを示す情報と、動画映像のフレームのエンドを検出したことを示す情報とを、下位レイヤーに係る、前記無線ＬＡＮのアクセス制御を行う通信手段に通知する通知手段を有し、前記通信手段は、前記通知手段からの前記通知に応じて、前記無線ＬＡＮを介した動画映像の転送に係る、ＭＡＣレベルのＡｃｋを制御することを特徴とする。
【００１０】
係る構成とすることにより、通知手段が動画映像のフレームのスタートと、エンドとを検出して、下位レイヤーである、通信手段に通知して、通信手段がこの通知に応じてＭＡＣレベルのＡｃｋ（例えば、ＢｌｏｃｋＡｃｋ等）を制御する。したがって、動画映像のフレームを下位レイヤーの通信手段が認識することができ、例えばエラー発生時等において、効率的な再送制御を行うことができるようになる。よって、再送処理をより効率化させることができる。
【００１１】
なお、通信機器とは、例えば、後述する送信装置１０１等に対応する。
また、本発明は、データ転送方法としてもよい。
【発明の効果】
【００１２】
本発明によれば、再送処理をより効率化させることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態について図面に基づいて説明する。
【００１４】
＜実施形態１＞
図１は、送信装置の構成を示すブロック図である。図１に示されるように、送信装置１０１は、撮像部１０２と、マルチエンコーダ１０３と、通信制御ＣＰＵ１０４と、通信モジュール１０５と、ＲＯＭ／ＲＡＭ１０６と、システムバス１０７とから構成される。
【００１５】
撮像部１０２は、センサーから入力された撮影した画像を出力する。マルチエンコーダ１０３は、撮像部１０２から出力された画像を、ＪＰＥＧ、ＭＰＥＧ４等に圧縮するエンコーダであり、同時に複数の処理が行えるものである。通信制御ＣＰＵ１０４は、送信装置１０１に搭載されるマイクロプロセッサ等のＣＰＵであり、装置全体の制御及び通信制御を行い、後述のＲＯＭ／ＲＡＭ１０６に格納された制御プログラムに従って、処理を行う。
【００１６】
通信モジュール１０５は、無線ＬＡＮ、或いは有線ＬＡＮ、或いは公衆回線用の通信モジュールであり、受信側の端末との接続、ネゴシエーション、動画データの送信を行う。ＲＯＭ／ＲＡＭ１０６は、制御プログラムデータ等が格納される。また、ＲＯＭ／ＲＡＭ１０６は、通信制御ＣＰＵ１０４のワークエリアとして使用され、種々の制御データが一時保存される。
【００１７】
システムバス１０７は上述した送信装置１０１の各構成を接続し、データの転送等を行う。通信回線１０８は、有線ＬＡＮ、或いは無線ＬＡＮ、或いは公衆回線等の通信回線である。
【００１８】
図２は、ＢｌｏｃｋＡｃｋに係るシーケンスの一例を示す図である。
図２に示されるように、送信側が、ＡＤＤＢｌｏｃｋＡｃｋＲｅｑを送信し、受信側がＡＤＤＢｌｏｃｋＡｃｋＲｅｓｐを返してからは、ＭＡＣフレーム送信に関しての送達確認（Ａｃｋ）を返さない。そして、送信側からのＢｌｏｃｋＡｃｋＲｅｑの送信によって、受信側は、ＢｌｏｃｋＡｃｋＲｅｓｐを送信することで、受信したＭＡＣフレームに対するＡｃｋをまとめて返す。この制御は、送信側からのＤｅｌＢｌｏｃｋＡｃｋＲｅｑの送信によって終了する。
【００１９】
図３は、実施形態１における通信制御ＣＰＵ１０４による、ストリーム送信処理の一例を説明するためのフローチャートである。
【００２０】
ステップＳ３０１において、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３からの映像がスタートするのを待つ。映像がスタートし、マルチエンコーダ１０３からのストリーミングが可能になることを検出すると、通信制御ＣＰＵ１０４は、ステップＳ３０２に移り、映像のフレームのスタートが、マルチエンコーダ１０３から通知されるのを待つ。マルチエンコーダ１０３が映像のフレームスタートを通信制御ＣＰＵ１０４に通知すると、ステップＳ３０３に進み、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３から、１フレーム分の映像を受信し、ＲＯＭ／ＲＡＭ１０６のＲＡＭ部に格納する。
【００２１】
次に、ステップＳ３０４において、通信制御ＣＰＵ１０４は、通信モジュール１０５に対して、フレーム送信要求を送信する。ステップＳ３０５において、通信制御ＣＰＵ１０４は、通信モジュール１０５からのフレーム送信応答を待ち、受信すると、ステップＳ３０６に進む。ステップＳ３０６において、通信制御ＣＰＵ１０４は、通信モジュール１０５から、１フレーム分の映像を全て送り終わったことを示すフレーム送信完了を受信するのを待つ。
【００２２】
フレーム送信完了を受信すると、ステップＳ３０７に進み、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３が、フレームエンドを検出したことを確認し、ステップＳ３０８に進む。ステップＳ３０８では、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３からの映像がストップしていないかを確認し、ストリーミングが継続している場合は、ステップＳ３０２に戻って、次のフレームの処理を行う。映像がストップしている場合には、図３に示すストリーム送信処理を終了する。
【００２３】
図４は、通信モジュール１０５による、フレーム送信処理の一例を説明するためのフローチャートである。
【００２４】
ステップＳ４０１において、通信モジュール１０５は、通信制御ＣＰＵ１０４からのフレーム送信要求を待つ。フレーム送信要求を受信すると、通信モジュール１０５は、ステップＳ４０２に進み、１フレームを送信しなければいけない最大の時間を設定したタイマーをスタートする。例えば、１秒に３０フレームを表示するような映像の場合、１フレームが、１／３０秒以上伝送にかかってしまうと、既に次のフレームの表示処理をしなくてはならず、このフレームの伝送は無駄となってしまう。そのため、通信モジュール１０５は、このフレーム送信処理のタイムアウト時間を設定し、無駄な伝送を行わないようにする。
【００２５】
ステップＳ４０３において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ処理を開始するために、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを、通信回線１０８を介して、通信相手端末に知らせる。ステップＳ４０４において、通信モジュール１０５は、このＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑのパケットが通信相手端末に受信されたことを通知するＡｃｋの受信を待つ。Ａｃｋを受信すると、ステップＳ４０５に進み、通信モジュール１０５は、通信相手端末が、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを認識し、Ｂｌｏｃｋ  Ａｃｋの処理を受け入れることを示すＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信するのを待つ。通信回線１０８から、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信すると、ステップＳ４０６に進み、通信モジュール１０５は、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐのパケットを受信したことを示すＡｃｋを送信する。
【００２６】
次に、ステップＳ４０７において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ処理でのフレーム送信処理の準備が整ったことを示すフレーム送信確認を、通信制御ＣＰＵ１０４に送信する。
【００２７】
この時点で、ＲＯＭ／ＲＡＭ１０６のＲＡＭ部には、通信制御ＣＰＵ１０４により、１フレーム分の映像が蓄積されているので、ステップＳ４０８において、通信モジュール１０５は、通信プロトコルに応じたパケット長に分割する。そして、ステップＳ４０９において、通信モジュール１０５は、この分割した映像データのパケットを通信回線１０８に送信する。通常の通信であれば、このパケット送信をした後に、通信相手端末からのＡｃｋ受信を待つ。
【００２８】
しかしながら、本実施形態におけるフレーム送信処理においては、Ｂｌｏｃｋ  Ａｃｋ処理の設定となっているので、通信モジュール１０５は、Ａｃｋ受信を待たずに、ステップＳ４１０に進む。ステップＳ４１０において、通信モジュール１０５は、ＲＯＭ／ＲＡＭ１０６の１フレーム分のデータが全て送信済みかどうかを確認し、送信済みでない場合は、ステップＳ４０９に戻って、次のパケット送信の処理を行う。送信済みの場合には、ステップＳ４１１において、通信モジュール１０５は、フレーム送信処理のタイムアウトが発生していないかどうかを確認する。
【００２９】
タイムアウトが発生していた場合には、通信モジュール１０５は、伝送しても無駄なデータとなるので、ステップＳ４２５に進んで、Ｂｌｏｃｋ  Ａｃｋ処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信する。そして、ステップＳ４２６において、通信モジュール１０５は、Ａｃｋの受信を待ち、ステップ４２７で、フレーム送信完了を通信制御ＣＰＵ１０４に送信して、このフレーム送信の処理を終了し、次のフレームの送信要求を待つ。
【００３０】
ステップＳ４１１において、フレーム送信処理のタイムアウトが発生していない場合には、１フレーム分のパケット送信が終了したことになるので、通信モジュール１０５は、ステップＳ４１２に進む。ステップＳ４１２において、通信モジュール１０５は、今まで送信したパケットが正常に受信されたかどうかを確認するためのＡｃｋをまとめてもらうための、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを、通信回線１０８を介して、通信相手端末に送信する。そして、ステップＳ４１３において、通信モジュール１０５は、このＢｌｏｃｋ  Ａｃｋ  Ｒｅｑが、正常に受信されたことを示すＡｃｋの受信を待つ。そして、ステップＳ４１４において、通信モジュール１０５は、通信相手端末からのＡｃｋ情報がまとめて示されているＢｌｏｃｋ  Ａｃｋ  Ｒｅｓｐの受信を待つ。Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信すると、ステップＳ４１５において、通信相手端末に、受信したことを示すＡｃｋを送信する。
【００３１】
次に、ステップＳ４１６において、通信モジュール１０５は、再送するための準備として、再送カウントを０に初期化する。
【００３２】
ステップＳ４１７において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐの中のＡｃｋ情報を調べて、エラーとなった最初のパケットを再送信に設定する。ステップＳ４１８において、通信モジュール１０５は、再送信に設定したパケットを送信し、ステップＳ４１９で、このエラーパケット（再送信に設定したパケット）が受信されたことを示すＡｃｋの受信を待つ。Ａｃｋを受信していない場合には、通信モジュール１０５は、Ａｃｋの受信のタイムアウトが発生していないかどうかをステップＳ４２０で確認し、タイムアウトしている場合には、ステップＳ４２１で、再送カウントを１増やす。そして、ステップＳ４２２において、通信モジュール１０５は、規定の再送回数に達していないかどうかを判断する。
【００３３】
ステップＳ４２０において、タイムアウトしていない場合は、通信モジュール１０５は、ステップＳ４１９に戻って、Ａｃｋの受信を待つ。ステップＳ４２２において、再送がＭＡＸ（規定の再送回数）を超えていない場合は、通信モジュール１０５は、ステップＳ４１８に戻って、エラーパケットの再送処理を行う。再送がＭＡＸ（規定の再送回数）を超えていた場合は、通信モジュール１０５は、ステップＳ４２３に進む。
【００３４】
ステップＳ４１９において、エラーパケットのＡｃｋを受信すると、通信モジュール１０５は、ステップＳ４２３に進む。ステップＳ４２３では、これらの再送処理によって、フレーム送信処理のタイムアウトが発生していないかを確認する。タイムアウトが発生している場合には、通信モジュール１０５は、ステップＳ４２５に進んで、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信する。そして、ステップＳ４２６において、通信モジュール１０５は、Ａｃｋの受信を待ち、ステップ４２７でフレーム送信完了を通信制御ＣＰＵ１０４に送信して、次のフレーム送信処理に移る。
【００３５】
ステップＳ４２３において、フレーム送信処理のタイムアウトが発生していない場合には、通信モジュール１０５は、ステップＳ４２４で、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐで示されるエラーとなったパケットの再送処理が全て終了したかどうかを判断する。全て終了した場合には、通信モジュール１０５は、ステップ４２５において、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信し、ステップＳ４２６でＡｃｋの受信を待つ。そして、ステップＳ４２７において、通信モジュール１０５は、フレームの送信処理が完了したことを示すフレーム送信完了を通信制御ＣＰＵ１０４に送信して、次のフレームの処理に移る。
【００３６】
ステップＳ４２４において、エラーパケットの再送処理が全て終了していない場合には、通信モジュール１０５は、ステップＳ４１７に戻って、次のエラーパケットの送信処理を行う。
以上のように本実施形態によれば、フレームを分割したパケットを送信する間は、Ｂｌｏｃｋ  Ａｃｋの処理により送信するので、分割パケットの送信毎にＡｃｋを受ける必要がなくなり、転送効率を向上できる。また、フレームを送信しなければならない時間が経過した後の再送を抑制でき、転送効率を更に向上できる。
【００３７】
＜実施形態２＞
図５は、実施形態２における通信制御ＣＰＵ１０４による、ストリーム送信処理の一例を説明するためのフローチャートである。
【００３８】
ステップＳ５０１において、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３に指示して、ストリームのエンコード処理を開始する。次に、ステップＳ５０２において、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３からＲＯＭ／ＲＡＭ１０６のＲＡＭ部に対するエンコードデータの受信が終了するのを待つ。
【００３９】
エンコードデータの受信が終了すると、ステップＳ５０３に進み、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３が、データを転送したＲＯＭ／ＲＡＭ１０６のＲＡＭ部のメモリスタートアドレスと、転送した総データ長とを調べる。そして、通信制御ＣＰＵ１０４は、メモリのエンドアドレス、つまり、メモリスタートアドレスに総データ長を足したアドレスを計算する。
【００４０】
次に、ステップＳ５０４において、通信制御ＣＰＵ１０４は、エンコードデータを通信モジュール１０５に渡すため、エンコードデータをＲＯＭ／ＲＡＭ１０６のＲＡＭ部から別のＲＡＭ部に、ＤＭＡ転送する。この際、メモリの先頭アドレスと、予め設定されている通信パケット長とを設定して、ＤＭＡ転送を開始（起動）することで、上記設定長のデータがＤＭＡ転送され、通信モジュールに渡される。
【００４１】
ステップＳ５０５において、通信制御ＣＰＵ１０４は、このＲＯＭ／ＲＡＭ１０６内のＤＭＡ転送が終了するのを待ち、ＤＭＡ転送が終了すると、ステップＳ５０６に進む。ステップＳ５０６において、通信制御ＣＰＵ１０４は、通信パケットのＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）ヘッダーを作成し、オプション領域のフレームスタートビットを１にして、ＲＯＭ／ＲＡＭ１０６に書く。次に、ステップＳ５０７において、通信制御ＣＰＵ１０４は、通信モジュール１０５に対して、ＲＴＰフレームの送信要求を出し、ステップＳ５０８において、通信モジュール１０５から、送信終了の通知が来るのを待つ。
【００４２】
送信が終了すると、通信制御ＣＰＵ１０４は、ステップＳ５０９において、ＲＯＭ／ＲＡＭ１０６に保持してあるメモリアドレスに通信パケット長を足して、次に送るべきエンコードデータの先頭を示すメモリアドレスにする。また、通信制御ＣＰＵ１０４は、残りのデータ長を、総データ長から通信パケット長を引いた値とする。
【００４３】
更に、ステップＳ５１０において、通信制御ＣＰＵ１０４は、ＲＯＭ／ＲＡＭ１０６のエンコードデータが、何パケットになるのかを計算するために、残りデータ長を通信パケット長で割ったものに１を足し、パケット数ｎとして、保持しておく。ステップＳ５１１において、通信制御ＣＰＵ１０４は、このパケット数ｎが１、つまり、最後のパケットかどうかを判断し、１でない場合には、ステップＳ５１２に進む。
【００４４】
ステップＳ５１２において、通信制御ＣＰＵ１０４は、次のパケット送信のために、アドレスと、通信パケット長とを設定して、ＲＯＭ／ＲＡＭ１０６内のＤＭＡ転送を開始する。
【００４５】
ステップＳ５１３において、通信制御ＣＰＵ１０４は、ＤＭＡ転送が終了するのを待ち、ＤＭＡ転送が終了すると、ステップＳ５１４で、通信パケットのＲＴＰヘッダーを作成し、且つフレームエンドのビットを０にセットして、ＲＯＭ／ＲＡＭ１０６に書く。次にステップＳ５１５において、通信制御ＣＰＵ１０４は、通信モジュール１０５に対して、ＲＴＰフレームの送信要求を出し、ステップＳ５１６において、通信モジュール１０５から、送信終了の通知が来るのを待つ。
【００４６】
送信が終了すると、ステップＳ５１７において、通信制御ＣＰＵ１０４は、次のパケット送信の準備のために、メモリアドレスを通信パケット長分進め、残りデータ長を通信パケット長分だけ減らす。ステップＳ５１８において、通信制御ＣＰＵ１０４は、パケット数ｎから１を引いて、ステップＳ５１１に戻って、次のフレームの送信を繰り返す。
【００４７】
ステップＳ５１１において、パケット数ｎが１で、最後のパケットであった場合は、通信制御ＣＰＵ１０４は、ステップＳ５１９において、アドレスと、残りデータ長とを設定して、ＤＭＡを開始する。ステップＳ５２０において、通信制御ＣＰＵ１０４は、このＤＭＡ転送が終了するのを待ち、ステップＳ５２１で、通信パケットのＲＴＰヘッダーを作成し、オプション領域のフレームエンドビットを１にして、ＲＯＭ／ＲＡＭ１０６に書く。
【００４８】
次にステップＳ５２２において、通信制御ＣＰＵ１０４は、通信モジュール１０５に対して、ＲＴＰフレームの送信要求を出し、ステップＳ５２３において、ＲＴＰフレームの送信が終了するのを待つ。送信が終了すると、通信制御ＣＰＵ１０４は、ステップＳ５２４において、ストリーミングが終了かどうかを判断し、終了でない場合は、ステップＳ５０２に戻って、次のエンコードデータ受信を待つ。ストリーミングが終了の場合には、通信制御ＣＰＵ１０４は、ステップＳ５２５において、マルチエンコーダ１０３に対して、エンコードの停止を指示して、図５に示すストリーム送信処理を終了する。
【００４９】
図６は、通信モジュール１０５による、ＲＴＰフレーム送信処理の一例を説明するためのフローチャートである。
【００５０】
ステップＳ６０１において、通信モジュール１０５は、通信制御ＣＰＵ１０４からのＲＴＰフレーム送信要求を待つ。ＲＴＰフレーム送信要求を受信すると、通信モジュール１０５は、ステップＳ６０２に進み、通信制御ＣＰＵ１０４がＲＯＭ／ＲＡＭ１０６に書き込んだＲＴＰヘッダーのフレームスタートビットに１が設定されているかどうかを判断する。フレームスタートビットに１がセットされていると、通信モジュール１０５は、ステップＳ６０３に進み、Ｂｌｏｃｋ  Ａｃｋ処理の開始を指定するＡＤＤ  Ｂｌｏｃｋ  Ｒｅｑを、通信回線１０８を介して、通信相手端末に対して送信する。
【００５１】
次に、ステップＳ６０４において、通信モジュール１０５は、通信回線１０８を介して、ＡＤＤ  Ｂｌｏｃｋ  Ｒｅｑを受信したことを示すＡｃｋの受信を待つ。Ａｃｋを受信すると、通信モジュール１０５は、ステップＳ６０５において、通信相手端末がＢｌｏｃｋ  Ａｃｋの処理を承認することを示すＡＤＤ  Ｂｌｏｃｋ  Ｒｅｓｐの受信を待つ。ＡＤＤ  Ｂｌｏｃｋ  Ｒｅｓｐを受信すると、通信モジュール１０５は、ステップＳ６０６において、ＡＤＤ  Ｂｌｏｃｋ  Ｒｅｑを受信したことを示すＡｃｋを、通信回線１０８を介して、通信相手端末に送信する。
【００５２】
次にステップＳ６０７において、通信モジュール１０５は、ＤＭＡ転送されて受け取ったデータに、ＲＯＭ／ＲＡＭ１０６に書き込まれたＲＴＰヘッダーを付けたパケットを、実際のデータが入ったパケットとして通信回線１０８を介して通信相手端末に送信する。ステップＳ６０８において、通信モジュール１０５は、このパケット送信の完了を待ち、送信が完了すると、ステップＳ６０９において、通信制御ＣＰＵ１０４にＲＴＰフレームの送信完了を通知して図６に示すＲＴＰフレーム送信処理を終了する。
【００５３】
ステップＳ６０２において、ＲＴＰヘッダーのフレームスタートビットが設定されていない場合には、通信モジュール１０５は、ステップＳ６１０において、ＲＴＰヘッダーのフレームエンドビットに１が設定されているかどうかを判断する。フレームエンドビットに１が設定されている場合には、通信モジュール１０５は、ステップＳ６１１において、まず、ＤＭＡ転送されて受け取ったデータに、ＲＯＭ／ＲＡＭ１０６に書き込まれたＲＴＰヘッダーを付けたパケットを、通信回線１０８を介して通信相手端末に送信する。
【００５４】
次に、ステップＳ６１２において、通信モジュール１０５は、パケット送信の終了を待つ。送信が終了すると、通信モジュール１０５は、ステップＳ６１３に進み、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを、通信回線１０８を介して通信相手端末に送信し、今まで送信したパケットに対するＡｃｋの結果をまとめて送ってもらうように指示する。そして、ステップＳ６１４において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを通信相手端末が受信したことを示すＡｃｋの受信を待つ。Ａｃｋを受信すると、通信モジュール１０５は、ステップＳ６１５に進んで、通信相手端末がどれだけのデータを含んだパケットを受信したかを示すＢｌｏｃｋ  Ａｃｋ  Ｒｅｓｐの受信を待つ。Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを通信相手端末から通信回線１０８を介して受信すると、通信モジュール１０５は、ステップＳ６１６に進み、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信したことを示すＡｃｋを、通信回線１０８を介して通信相手端末に送信する。
【００５５】
次にステップＳ６１７において、通信モジュール１０５は、通信相手端末から受信したＢｌｏｃｋ  Ａｃｋ  Ｒｅｓｐにおいて、エラーが報告されているかどうかを判断する。もしエラーがあった場合は、ステップＳ６１８において、通信モジュール１０５は、エラーに係るパケットの再送処理を行う。エラーがない場合には、通信モジュール１０５は、再送処理を実施せずに、ステップＳ６１９に進む。
【００５６】
ステップＳ６１９において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋの処理を終了することを指示するＤＥＬ  ＢｌｏｃｋＡｃｋを、通信回線１０８を介して、通信相手端末に送信する。そして、ステップＳ６２０において、通信モジュール１０５は、通信相手端末がＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを受信したことを示すＡｃｋを受信するのを待つ。Ａｃｋを受信すると、通信モジュール１０５は、ステップＳ６０９に進んで、通信制御ＣＰＵ１０４にＲＴＰフレームの送信完了を通知して、図６に示すＲＴＰフレーム送信処理を終了する。
【００５７】
ステップＳ６１０において、フレームエンドビットに１が設定されていない場合は（０が設定されている場合）、通信モジュール１０５は、ステップＳ６２１に進んで、通常のデータを含んだパケットを、通信回線１０８を介して通信相手端末に送信する。つまり、ＤＭＡ転送されて受け取ったデータに、ＲＯＭ／ＲＡＭ１０６に書き込まれたＲＴＰヘッダーを付けたパケットを、通信回線１０８を介して通信相手端末に送信する。続いて、ステップＳ６２２において、通信モジュール１０５は、このパケットの送信が終了するのを待つ。送信が終了すると、通信モジュール１０５は、ステップＳ６０９に進んで、通信制御ＣＰＵ１０４にＲＴＰフレームの送信完了を通知して、図６に示すＲＴＰフレーム送信処理を終了する。
【００５８】
もしステップＳ６１８の再送処理においてＭＡＣレベルでの再送が規定回数実施しても、成功しない場合には、通信モジュール１０５は、ステップＳ６０９のフレームの送信完了通知で、ＭＡＣレベルでのエラーが発生したことを通信制御ＣＰＵ１０４に通知する。つまり、通信モジュール１０５は、上位レイヤーでの再送処理を期待する。
以上にように本実施形態によれば、エンコーダがエンコードしたデータを分割してＲＴＰフレームとして送信する間は、Ｂｌｏｃｋ  Ａｃｋの処理により送信するので、分割パケットの送信毎にＡｃｋを受ける必要がなくなり、転送効率を向上できる。
【００５９】
＜実施形態３＞
図７は、実施形態３における通信制御ＣＰＵ１０４による、ストリーム送信処理の一例を説明するためのフローチャートである。
【００６０】
ステップＳ７０１において、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３からの映像がスタートするのを待つ。映像がスタートし、マルチエンコーダ１０３からのストリーミングが可能になることを検出すると、通信制御ＣＰＵ１０４は、ステップＳ７０２に移り、マルチエンコーダ１０３から１フレーム分の映像を受信し、ＲＯＭ／ＲＡＭ１０６に格納する。
【００６１】
次に、ステップＳ７０３において、通信制御ＣＰＵ１０４は、例えば、ＩＰフレームのように、通信するフレームサイズにあわせて、映像データを分割する（パケタイズ）作業を行う。ステップＳ７０４において、通信制御ＣＰＵ１０４から、通信モジュール１０５にＤＭＡ転送で通信フレームを転送する。ステップＳ７０５において、通信制御ＣＰＵ１０４は、通信フレームを転送する最大の時間を設定したタイマーを設定する。例えば、１秒間に３０フレームの映像を転送したいのであれば、映像１フレームの転送に費やすことができる時間は、１／３０秒＝約０．０３３秒となる。更に、映像１フレームは、通信プロトコルの設定に応じて、通信のフレームに分割されるので、１通信フレームの転送にかけてもいい最大の時間をタイマーに設定することになる。
【００６２】
次に、ステップＳ７０６において、通信制御ＣＰＵ１０４は、通信モジュール１０５に対して、通信フレーム送信要求を送信する。ステップＳ７０７において、通信制御ＣＰＵ１０４は、通信モジュール１０５からの通信フレーム送信応答を待ち、通信フレーム送信応答を受信すると、ステップＳ７０８に進む。ステップＳ７０８において、通信制御ＣＰＵ１０４は、映像フレームをパケタイズして生成した通信フレームを全て送信したかどうかを判断し、全て送信した場合は、ステップＳ７０９に進み、映像フレーム送信のタイマーをストップしてステップＳ７１０に進む。ステップＳ７０８において、映像フレームの送信が終了していない場合には、通信制御ＣＰＵ１０４は、ステップＳ７０６に戻って、次の通信フレームの送信処理を続ける。
【００６３】
ステップＳ７１０において、通信制御ＣＰＵ１０４は、映像がストップされていないかどうかを判断し、映像がストップしている場合には、図７に示すストリーム送信処理を終了する。一方、ストップしていない場合には、通信制御ＣＰＵ１０４は、ステップＳ７０２に戻って、次の映像フレームの処理を続ける。
【００６４】
ステップＳ７０７において、通信フレームの送信応答を受信していない場合は、通信制御ＣＰＵ１０４は、ステップＳ７１１で、通信フレームのタイムアウトかどうかを判断する。タイムアウトでない場合には、通信制御ＣＰＵ１０４は、ステップＳ７０７に戻って、引き続き、通信フレームの送信応答を待つ。
【００６５】
ステップＳ７１１で、タイムアウトを検出した場合には、通信制御ＣＰＵ１０４は、ステップＳ７１２に進んで、送信レートが規定値よりも大きいかどうかを判断する。ここでいう送信レートとは、１秒間に送信する映像のフレーム数を示すので、送信レートが大きくなればなるほど、１フレームの送信に使える時間が短くなる。つまり、動画等のデータで、１分間に３０フレームの映像を転送する場合、再送を行うと、その処理に時間をとられ、この送信レートを維持することが困難となる。そこで、このような送信レートの場合には、再送を行わないことにする。通信制御ＣＰＵ１０４は、この判断を、ステップＳ７１２で行う。
【００６６】
ステップＳ７１２において、送信レートが規定値よりも大きい場合は、通信制御ＣＰＵ１０４は、再送処理を行わず、ステップＳ７０８に進んで、次の通信フレームの処理に移る。送信レートが規定値よりも小さい場合には、通信制御ＣＰＵ１０４は、再送処理を行うため、ステップＳ７１３に進んで、再送カウンタを０にリセットし、再送のためのタイマーをスタートする。
【００６７】
次にステップＳ７１４で、通信制御ＣＰＵ１０４は、通信モジュール１０５に対して、通信フレーム再送のための通信フレーム送信要求を送信する。ステップＳ７１５において、通信制御ＣＰＵ１０４は、通信モジュール１０５からの通信フレーム送信応答を待ち、受信すると、ステップＳ７０８に進む。ステップＳ７１５において、通信フレームの送信応答を受けていない場合には、通信制御ＣＰＵ１０４は、ステップＳ７１６で、再送がタイムアウトかどうかを判断し、タイムアウトしていない場合には、ステップＳ７１５に戻って、通信フレームの送信応答を待つ。
【００６８】
タイムアウトした場合には、通信制御ＣＰＵ１０４は、ステップＳ７１７で、再送カウントを１つインクリメントし、ステップＳ７１８で予め規定された再送回数の再送を行ったかどうかを判断する。規定の再送を行った場合は、通信制御ＣＰＵ１０４は、ステップＳ７０８に進んで、次の通信フレームの処理を行う。規定回数の再送を行っていない場合は、通信制御ＣＰＵ１０４は、ステップＳ７１４に戻って、再送のための通信フレーム送信要求を、通信モジュール１０５に送信する。
【００６９】
図８は、通信モジュール１０５における通信フレーム送信処理を説明するためのフローチャートである。ステップＳ１３０１において、通信制御ＣＰＵ１０４が通信モジュール１０５への通信フレームを開始したかどうかを待ち、通信フレーム転送が開始されたら、ステップＳ１３０２において、通信フレームを受信する。ステップＳ１３０３において、通信フレーム送信のためのタイマーをスタートし、ステップＳ１３０４において、受信した通信フレームに無線ＬＡＮのためのＭＡＣヘッダーを追加したＭＡＣフレームを送信する。ステップＳ１３０５において、ＭＡＣフレームの送信が完了したかどうか待ち、完了した場合には、ステップＳ１３０６に進んでタイマーをストップし、ステップＳ１３０７において、通信制御ＣＰＵ１０４に対して、通信フレーム送信応答を返して処理を終了する。
【００７０】
ステップＳ１３０５において、送信が完了していない場合には、ステップＳ１３０８において、タイムアウトかどうかを判断し、タイムアウトではない場合は、ステップＳ１３０５に戻って、フレームの送信完了を待つ。もし、タイムアウトした場合は、ステップＳ１３０９において、再送カウンタを０にし、再送のためのタイマーをスタートする。ステップＳ１３１０でＭＡＣフレームを再送し、ステップＳ１３１１でＭＡＣフレーム送信が完了したかどうかを判断する。送信が完了した場合は、ステップＳ１３０６に進んでタイマーをストップする。送信が完了していない場合には、ステップＳ１３１２に進んで、再送がタイムアウトしていないかどうかを判断し、タイムアウトでない場合には、ステップＳ１３１１に進んで、送信完了を待つ。
【００７１】
再送がタイムアウトした場合には、ステップＳ１３１３において、再送カウンタを１インクリメントし、ステップＳ１３１４で再送カウントが規定値を超えていないかどうか判断する。規定値を超えた場合は、再送処理を終了し、ステップＳ１３０６に進んでタイマーをストップする。規定値を超えていない場合は、ステップＳ１３１５に進んで、再度、再送タイマーをストップし、ステップＳ１３１０に進んで、ＭＡＣフレームの再送処理を行う。
【００７２】
通常、無線ＬＡＮを用いた伝送の場合、通信エラーが発生する確率、エラー率は有線ＬＡＮよりも高く、再送した場合もエラーになる場合も多い。更に、送信レートが高い場合には、その再送処理による遅延によって、受信側の許容された処理時間内にパケットが到着せず、再送処理が無駄になる場合もある。本実施例は、このような場合を想定して、送信レートが高くて、受信側の許容処理時間が短いような場合には、再送をせずに次の処理を行うことを特徴としている。これにより、再送処理を軽減して、遅延を少なくするとともに、受信側の負荷を軽減し、効率的な伝送を行える。
【００７３】
＜実施形態４＞
図９、図１０は、マクロブロックを説明するための図である。
映像を圧縮する符号化アルゴリズムには、様々な種類があるが、ＭＰＥＧ４等の符号化においては、映像を１６×１６画素分の矩形ブロック領域に分割して、符号化を行う。このブロックのことを、マクロブロックという。例えば、図９のような人物の映像があると、これを１６Ｘ１６のマクロブロックで分割して符号化する。
【００７４】
また、通常、映像を送信する場合には、ライン単位で左から右に転送を行っていくが、ライン単位ではなく、本実施形態ではマクロブロック単位で転送を行う例を説明する。つまり、図１０で示されるように、マクロブロックの領域内のデータを、左から右に向かって伝送していく。
【００７５】
図１１は、通信モジュール１０５による、マクロブロック送信処理の一例を説明するためのフローチャートである。
【００７６】
ステップＳ１００１において、通信モジュール１０５は、通信制御ＣＰＵ１０４からのマクロブロック送信要求を待つ。マクロブロック送信要求を受信すると、通信モジュール１０５は、ステップＳ１００２に進み、１マクロブロックを送信しなければいけない最大の時間を設定したタイマーをスタートする。
【００７７】
ステップＳ１００３において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ処理を開始するために、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを、通信回線１０８を介して、通信相手端末に知らせる。ステップＳ１００４において、通信モジュール１０５は、このＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑのパケットが通信相手端末に受信されたことを通知するＡｃｋの受信を待つ。Ａｃｋを受信すると、ステップＳ１００５に進み、通信モジュール１０５は、通信相手端末が、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを認識し、Ｂｌｏｃｋ  Ａｃｋの処理を受け入れることを示すＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信するのを待つ。通信回線１０８から、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信すると、ステップＳ１００６に進み、通信モジュール１０５は、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐのパケットを受信したことを示すＡｃｋを送信する。
【００７８】
次に、ステップＳ１００７において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ処理でのマクロブロック送信処理の準備が整ったことを示すマクロブロック送信確認を、通信制御ＣＰＵ１０４に送信する。
【００７９】
この時点で、ＲＯＭ／ＲＡＭ１０６のＲＡＭ部には、通信制御ＣＰＵ１０４により、１マクロブロック分の映像が蓄積されている。ステップＳ１００８において、通信モジュール１０５は、ＲＯＭ／ＲＡＭ１０６のＲＡＭ部に蓄積されているマクロブロックを通信プロトコルに応じたパケット長に分割する。そして、ステップＳ１００９において、通信モジュール１０５は、この分割した映像データのパケットを通信回線１０８に送信する。通常の通信であれば、このパケット送信をした後に、通信相手端末からのＡｃｋ受信を待つ。
【００８０】
しかしながら、本実施形態におけるマクロブロック送信処理においては、Ｂｌｏｃｋ  Ａｃｋ処理の設定となっているので、通信モジュール１０５は、Ａｃｋ受信を待たずに、ステップＳ１０１０に進む。ステップＳ１０１０において、通信モジュール１０５は、ＲＯＭ／ＲＡＭ１０６の１マクロブロック分のデータが全て送信済みかどうかを確認し、送信済みでない場合は、ステップＳ１００９に戻って、次のパケット送信の処理を行う。送信済みの場合には、ステップＳ１０１１において、通信モジュール１０５は、マクロブロック処理のタイムアウトが発生していないかどうかを確認する。
【００８１】
タイムアウトが発生していた場合には、通信モジュール１０５は、伝送しても無駄なデータとなるので、ステップＳ１０２５に進んで、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信する。そして、ステップＳ１０２６において、通信モジュール１０５は、Ａｃｋの受信を待ち、ステップＳ１０２７で、マクロブロック送信完了を通信制御ＣＰＵ１０４に送信して、このマクロブロック送信の処理を終了し、次のマクロブロックの送信要求を待つ。
【００８２】
ステップＳ１０１１において、マクロブロック送信処理のタイムアウトが発生していない場合には、１マクロブロック分のパケット送信が終了したことになるので、通信モジュール１０５は、ステップＳ１０１２に進む。ステップＳ１０１２において、通信モジュール１０５は、今まで送信したパケットが正常に受信されたかどうかを確認するためのＡｃｋをまとめてもらうための、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを、通信回線１０８を介して、通信相手端末に送信する。そして、ステップＳ１０１３において、通信モジュール１０５は、このＢｌｏｃｋ  Ａｃｋ  Ｒｅｑが、正常に受信されたことを示すＡｃｋの受信を待つ。そして、ステップＳ１０１４において、通信モジュール１０５は、通信相手端末からのＡｃｋ情報がまとめて示されているＢｌｏｃｋ  Ａｃｋ  Ｒｅｓｐの受信を待つ。Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信すると、ステップＳ１０１５において、通信モジュール１０５は、通信相手端末に、受信したことを示すＡｃｋを送信する。
【００８３】
次に、ステップＳ１０１６において、通信モジュール１０５は、再送するための準備として、再送カウントを０に初期化する。
【００８４】
ステップＳ１０１７において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐの中のＡｃｋ情報を調べて、エラーとなった最初のパケットを再送信に設定する。ステップＳ１０１８において、通信モジュール１０５は、再送信に設定したパケットを送信し、ステップＳ１０１９で、このエラーパケット（再送信に設定したパケット）が受信されたことを示すＡｃｋの受信を待つ。Ａｃｋの受信をしていない場合には、通信モジュール１０５は、Ａｃｋの受信のタイムアウトが発生していないかどうかをステップＳ１０２０で確認し、タイムアウトしている場合には、ステップＳ１０２１で、再送カウントを１増やす。そして、ステップＳ１０２２において、通信モジュール１０５は、規定の再送回数に達していないかどうかを判断する。
【００８５】
ステップＳ１０２０において、タイムアウトしていない場合は、通信モジュール１０５は、ステップＳ１０１９に戻って、Ａｃｋの受信を待つ。ステップＳ１０２２において、再送がＭＡＸ（規定の再送回数）を超えていない場合は、通信モジュール１０５は、ステップＳ１０１８に戻って、エラーパケットの再送処理を行う。
【００８６】
ステップＳ１０１９において、エラーパケットのＡｃｋを受信すると、通信モジュール１０５は、ステップＳ１０２３で、これらの再送処理によって、マクロブロック送信処理のタイムアウトが発生していないかを確認する。タイムアウトが発生している場合には、通信モジュール１０５は、ステップＳ１０２５に進んで、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信する。そして、ステップＳ１０２６において、通信モジュール１０５は、Ａｃｋの受信を待ち、ステップＳ１０２７でマクロブロック送信完了を通信制御ＣＰＵ１０４に送信して、次のマクロブロック送信処理に移る。
【００８７】
ステップＳ１０２３において、マクロブロック送信処理のタイムアウトが発生していない場合、通信モジュール１０５は、ステップＳ１０２４で、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐで示されるエラーとなったパケットの再送処理が全て終了したかどうかを判断する。全て終了した場合には、通信モジュール１０５は、ステップＳ１０２５において、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信し、ステップＳ１０２６でＡｃｋの受信を待つ。そして、ステップＳ１０２７において、通信モジュール１０５は、マクロブロックの送信処理が完了したことを示すマクロブロック送信完了を通信制御ＣＰＵ１０４に送信して、次のマクロブロックの処理に移る。
【００８８】
ステップＳ１０２４において、エラーパケットの再送処理が全て終了していない場合には、通信モジュール１０５は、ステップＳ１０１７に戻って、次のエラーパケットの送信処理を行う。
【００８９】
通常、１秒間に３０フレームの映像を送る場合、１フレームの転送及び表示にかけられる時間は、１／３０秒である。この時間を超えると次のフレーム処理を行う必要がある。本実施形態４によって、マクロブロック単位での再送処理を抑制し、１フレーム全体の処理として規定時間内に終えることが可能になり、より効率的で、フレームの処理が間に合うようになり、ユーザーにとって、フレーム落ち或いは表示の停止といった障害が見えにくくなるという効果がある。
【００９０】
＜実施形態５＞
図１２は、リシンクマーカーを説明するための図である。
圧縮された映像等の通信において、エラーが発生した場合には、受信側において、正常に復号できないため、送信側は映像ストリーム中にリシンク（再同期）マーカーを入れておき、エラーに対する処理を行う。例えば、送信側は、エラーが発生した際に、リシンクマークまで戻って、再送するとか、次のリシンクマーカーまでスキップする等の処理が可能となる。
【００９１】
図１３は、通信モジュール１０５による、リシンクブロック送信処理の一例を説明するためのフローチャートである。
【００９２】
ステップＳ１２０１において、通信モジュール１０５は、通信制御ＣＰＵ１０４からのリシンクブロック送信要求を待つ。リシンクブロック送信要求を受信すると、通信モジュール１０５は、ステップＳ１２０２に進み、１リシンクブロックを送信しなければいけない最大の時間を設定したタイマーをスタートする。
【００９３】
ステップＳ１２０３において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ処理を開始するために、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを、通信回線１０８を介して、通信相手端末に知らせる。ステップＳ１２０４において、通信モジュール１０５は、このＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑのパケットが通信相手端末に受信されたことを通知するＡｃｋの受信を待つ。Ａｃｋを受信すると、ステップＳ１２０５に進み、通信モジュール１０５は、通信相手端末が、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを認識し、Ｂｌｏｃｋ  Ａｃｋの処理を受け入れることを示すＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信するのを待つ。通信回線１０８から、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信すると、ステップＳ１２０６に進み、通信モジュール１０５は、ＡＤＤ  Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐのパケットを受信したことを示すＡｃｋを送信する。
【００９４】
次に、ステップＳ１２０７において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ処理でのリシンクブロック送信処理の準備が整ったことを示すリシンクブロック送信確認を、通信制御ＣＰＵ１０４に送信する。
【００９５】
この時点で、ＲＯＭ／ＲＡＭ１０６のＲＡＭ部には、通信制御ＣＰＵ１０４により、１リシンクブロック分の映像が蓄積されている。ステップＳ１２０８において、通信モジュール１０５は、ＲＯＭ／ＲＡＭ１０６に蓄積されているリシンクブロックを通信プロトコルに応じたパケット長に分割する。そして、ステップＳ１２０９において、通信モジュール１０５は、この分割した映像データのパケットを通信回線１０８に送信する。通常の通信であれば、このパケット送信をした後に、通信相手端末からのＡｃｋ受信を待つ。
【００９６】
しかしながら、本実施形態におけるリシンクブロック送信処理においては、Ｂｌｏｃｋ  Ａｃｋ処理の設定となっているので、通信モジュール１０５は、Ａｃｋ受信を待たずに、ステップＳ１２１０に進む。ステップＳ１２１０で、通信モジュール１０５は、ＲＯＭ／ＲＡＭ１０６の１リシンクブロック分のデータが全て送信済みかどうかを確認し、送信済みでない場合は、ステップＳ１２０９に戻って、次のパケット送信の処理を行う。送信済みの場合には、ステップＳ１２１１において、通信モジュール１０５は、リシンクブロック処理のタイムアウトが発生していないかどうかを確認する。
【００９７】
タイムアウトが発生していた場合には、通信モジュール１０５は、伝送しても無駄なデータとなるので、ステップＳ１２２５に進んで、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信する。そして、ステップＳ１２２６において、通信モジュール１０５は、Ａｃｋの受信を待ち、ステップＳ１２２７で、リシンクブロック送信完了を通信制御ＣＰＵ１０４に送信して、このリシンクブロック送信の処理を終了し、次のリシンクブロックの送信要求を待つ。
【００９８】
ステップＳ１２１１において、リシンクブロック送信処理のタイムアウトが発生していない場合には、１リシンクブロック分のパケット送信が終了したことになるので、通信モジュール１０５は、ステップＳ１２１２に進む。ステップＳ１２１２において、通信モジュール１０５は、今まで送信したパケットが正常に受信されたかどうかを確認するためのＡｃｋをまとめてもらうための、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｑを、通信回線１０８を介して、通信相手端末に送信する。そして、ステップＳ１２１３において、通信モジュール１０５は、このＢｌｏｃｋ  Ａｃｋ  Ｒｅｑが、正常に受信されたことを示すＡｃｋの受信を待つ。そして、ステップＳ１２１４において、通信モジュール１０５は、通信相手端末からのＡｃｋ情報がまとめて示されているＢｌｏｃｋ  Ａｃｋ  Ｒｅｓｐの受信を待つ。Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐを受信すると、ステップＳ１２１５において、通信モジュール１０５は、通信相手端末に、受信したことを示すＡｃｋを送信する。
【００９９】
次に、ステップＳ１２１６において、通信モジュール１０５は、再送するための準備として、再送カウントを０に初期化する。
【０１００】
ステップＳ１２１７において、通信モジュール１０５は、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐの中のＡｃｋ情報を調べて、エラーとなった最初のパケットを再送信設定する。ステップＳ１２１８において、通信モジュール１０５は、再送信に設定したパケットを送信し、ステップＳ１２１９で、このエラーパケット（再送信に設定したパケット）が受信されたことを示すＡｃｋの受信を待つ。Ａｃｋの受信をしていない場合には、通信モジュール１０５は、Ａｃｋの受信のタイムアウトが発生していないかどうかをステップＳ１２２０で確認し、タイムアウトしている場合には、ステップＳ１２２１で、再送カウントを１増やす。そして、ステップＳ１２２２において、通信モジュール１０５は、規定の再送回数に達していないかどうかを判断する。
【０１０１】
ステップＳ１２２０において、タイムアウトしていない場合は、通信モジュール１０５は、ステップＳ１２１９に戻って、Ａｃｋの受信を待つ。ステップＳ１２２２において、再送がＭＡＸ（規定の再送回数）を超えていない場合は、通信モジュール１０５は、ステップＳ１２１８に戻って、エラーパケットの再送処理を行う。
【０１０２】
ステップＳ１２１９において、エラーパケットのＡｃｋを受信すると、通信モジュール１０５は、ステップＳ１２２３で、これらの再送処理によって、リシンクブロック送信処理のタイムアウトが発生していないかを確認する。タイムアウトが発生している場合には、通信モジュール１０５は、ステップＳ１２２５に進んで、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信する。そして、ステップＳ１２２６において、通信モジュール１０５は、Ａｃｋの受信を待ち、ステップＳ１２２７でリシンクブロック送信完了を通信制御ＣＰＵ１０４に送信して、次のリシンクブロック送信処理に移る。
【０１０３】
ステップＳ１２２３において、リシンクブロック送信処理のタイムアウトが発生していない場合、通信モジュール１０５は、ステップＳ１２２４で、Ｂｌｏｃｋ  Ａｃｋ  Ｒｅｓｐで示されるエラーとなったパケットの再送処理が全て終了したかどうかを判断する。全て終了した場合には、通信モジュール１０５は、ステップＳ１２２５において、Ｂｌｏｃｋ  Ａｃｋの処理を終了させるＤＥＬ  Ｂｌｏｃｋ  Ａｃｋを送信し、ステップＳ１２２６でＡｃｋの受信を待つ。そして、ステップＳ１２２７において、通信モジュール１０５は、リシンクブロックの送信処理が完了したことを示すリシンクブロック送信完了を通信制御ＣＰＵ１０４に送信して、次のリシンクブロックフレームの処理に移る。
【０１０４】
ステップＳ１２２４において、エラーパケットの再送処理が全て終了していない場合には、通信モジュール１０５は、ステップＳ１２１７に戻って、次のエラーパケットの送信処理を行う。
【０１０５】
図１４は、通信制御ＣＰＵ１０４によるストリーム送信処理の一例を説明するためのフローチャートである。
【０１０６】
ステップＳ１４０１において、通信制御ＣＰＵ１０４は、マルチエンコーダ１０３に指示して、ストリームのエンコード処理を開始する。次に、ステップＳ１４０２において、マルチエンコーダ１０３からの映像が出てくるのを待つ。マルチエンコーダ１０３から映像がでてくると、ステップＳ１４０３に進み、エンコードされたデータを受信して、ＲＯＭ／ＲＡＭ１０６のＲＡＭ部に蓄積する。
【０１０７】
次に、ステップＳ１４０４で、この映像データを分割して、リシンクマークを付与したリシンクブロックを、同じＲＯＭ／ＲＡＭ部１０６のＲＡＭに作成する。ステップＳ１４０５において、このリシンクブロックの送信要求を、通信モジュール１０５に対して指示する。通信モジュール１０５は、この送信要求により、ＲＯＭ／ＲＡＭ部１０６内のＲＡＭより、リシンクブロックを読み出して、送信処理を行う。
【０１０８】
ステップＳ１４０６において、通信モジュール１０５から、送信要求を受信した確認であるリシンク送信確認の受信を待ち、受信するとステップＳ１４０７で、実際のリシンクブロック送信が完了したことを示すリシンクブロック送信完了の受信を待つ。リシンクブロック送信完了を受信すると、ステップＳ１４０８で受信したリシンク送信完了が正常終了したかどうかを判断する。
【０１０９】
正常終了した場合は、ステップＳ１４０９に進んで、マルチエンコーダ１０３からの映像がストップしていないかどうかを判断し、映像がストップしている場合は、処理を終了する。映像がストップしていない場合は、ステップＳ１４０３に戻って、次のリシンクブロックの送信処理を続ける。ステップＳ１４０８で、リシンクブロックの送信でエラーが発生した場合は、ステップＳ１４１０に進んで、リシンクブロックの再送処理を行って、ステップＳ１４０９に進む。
【０１１０】
本実施形態によれば、リシンクブロック毎の送信に対して、Ｂｌｏｃｋ  Ａｃｋを対応させることにより、リシンクブロックのデータ送信に対するＡｃｋを最小限にして、効率的なストリーム伝送を実現できる。また、リシンクブロック単位で送信、再送を行うことにより、最小限の再送を行いつつ、受信側での遅延を少なくしてリアルタイム性のある通信を行うことが可能になる。
【０１１１】
＜その他の実施形態＞
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（又は記憶媒体）を、システム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１１２】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行う。その処理によって上述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１３】
更に、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１４】
本発明を前記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【０１１５】
以上、上述した各実施形態によれば、再送処理をより効率化させることができる。
【０１１６】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。なお、上述した各実施形態を任意に組み合わせて実施してもよい。
【図面の簡単な説明】
【０１１７】
【図１】送信装置の構成を示すブロック図である。
【図２】ＢｌｏｃｋＡｃｋに係るシーケンスの一例を示す図である。
【図３】実施形態１における通信制御ＣＰＵ１０４による、ストリーム送信処理の一例を説明するためのフローチャートである。
【図４】通信モジュール１０５による、フレーム送信処理の一例を説明するためのフローチャートである。
【図５】実施形態２における通信制御ＣＰＵ１０４による、ストリーム送信処理の一例を説明するためのフローチャートである。
【図６】通信モジュール１０５による、ＲＴＰフレーム送信処理の一例を説明するためのフローチャートである。
【図７】実施形態３における通信制御ＣＰＵ１０４による、ストリーム送信処理の一例を説明するためのフローチャートである。
【図８】通信モジュール１０５による、通信フレーム送信処理の一例を説明するためのフローチャートである。
【図９】マクロブロックを説明するための図（その１）である。
【図１０】マクロブロックを説明するための図（その２）である。
【図１１】通信モジュール１０５による、マクロブロック送信処理の一例を説明するためのフローチャートである。
【図１２】リシンクマーカーを説明するための図である。
【図１３】通信モジュール１０５による、リシンクブロック送信処理の一例を説明するためのフローチャートである。
【図１４】通信制御ＣＰＵ１０４による、ストリーム送信処理の一例を説明するためのフローチャートである。
【符号の説明】
【０１１８】
１０１  送信装置
１０２  撮像部
１０３  マルチエンコーダ
１０４  通信制御ＣＰＵ
１０５  通信モジュール
１０６  ＲＯＭ／ＲＡＭ
１０７  システムバス
１０８  通信回線
【図１】
2008079150.tif 000003
【図２】
2008079150.tif 000004
【図３】
2008079150.tif 000005
【図４】
2008079150.tif 000006
【図５】
2008079150.tif 000007
【図６】
2008079150.tif 000008
【図７】
2008079150.tif 000009
【図８】
2008079150.tif 000010
【図９】
2008079150.tif 000011
【図１０】
2008079150.tif 000012
【図１１】
2008079150.tif 000013
【図１２】
2008079150.tif 000014
【図１３】
2008079150.tif 000015
【図１４】
2008079150.tif 000016