以下に、図面を参照して、この発明の実施の形態の一例を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
(第1実施形態)
本発明に係る通信装置の第1実施形態として、デジタルカメラを例に挙げて以下に説明する。
<システム構成>
図1は、第1実施形態に係る通信システム100の全体構成を示す図である。通信システム100は、例えば、デジタルカメラ101、スマートデバイス102A〜102Bを含むように構成される。ここでは、デジタルカメラ101およびスマートデバイス102A〜102Bはそれぞれ無線通信機能(通信部)を有し通信可能に構成されているものとする。ここでは、無線通信機能は、IEEE802.11シリーズに準拠した無線LAN機能であるものとして説明する。しかし、これに限らず、Bluetooth(登録商標)、MBOA、UWB、ZigBee、NFC(Near Filed Communication)等、他の無線通信機能であってもよい。また、無線通信に代えて、有線LAN等の有線通信を行ってもよい。ここで、MBOAは、Multi Band OFDM Allianceの略である。また、UWBは、Ultra Wide Bandの略であり、ワイヤレスUSB、ワイヤレス1394、WINETなどが含まれる。
デジタルカメラ101は、無線LANのアクセスポイント(AP)として動作可能であり、インフラストラクチャ・モードで無線LANのネットワーク103を構築可能である。又はWi−Fi Direct規格に準拠した無線通信を行い、Group Ownerとして動作して無線LANのネットワーク103を構築可能である。また、スマートデバイス102A〜102Bは、ステーション(STA)として動作可能であり、無線LANネットワーク103に接続することが出来る。又はWi−Fi Direct規格に準拠した無線通信を行い、Clientとして動作して無線LANネットワーク103に接続することができる。これにより、スマートデバイス102A〜102Bは、無線LAN通信104A〜104Bを介してデジタルカメラ101と無線通信を行うことができる。
なお、ここでは、デジタルカメラ101が無線LANネットワークを構築し、スマートデバイス102が当該無線LANネットワークに接続するものとして説明するが、これに限るものではない。例えば、スマートデバイス102が無線LANネットワークを構築し、デジタルカメラ101が当該無線LANネットワークに接続してもよい。また、デジタルカメラ101およびスマートデバイス102以外の外部装置が構築する無線LANネットワークを利用するよう構成してもよい。ここで、外部装置は無線LANのアクセスポイント等でありうる。また、無線LAN以外の無線ネットワーク、有線ネットワーク、及びそれらの複合ネットワークを用いる形態であってもよい。
また、デジタルカメラおよびスマートデバイスは、後述の処理を実行する通信装置の一例に過ぎず、どのような装置が用いられてもよい。すなわち、デジタルカメラは、例えば、ノートパソコン、タブレット端末、ポータブルゲーム機、パーソナルデジタルアシスタント(PDA)などの、通信機能を有する任意の通信装置と置き換えられうる。また、スマートデバイスも、同様に任意の通信装置で置き換えられうる。
・デジタルカメラ
図2は、デジタルカメラの内部構成を示す図である。特に、図2(a)は、デジタルカメラ101のハードウェア構成を示し、図2(b)は、デジタルカメラ101の機能構成を示している。
無線LAN制御部201は、無線LAN関連のRF制御、通信処理、プロトコル処理を行う。アンテナ202は、無線LAN通信の電波を送受信する。制御部203は、一つ又は複数のプロセッサによって構成され、ROM204に記憶される制御プログラムを実行することによりデジタルカメラ101全体を制御する。ROM204は、制御部203が実行する制御プログラムを記憶する。後述する各種動作は、ROM204に記憶された制御プログラムを制御部203が実行することにより行われる。RAM205は、制御プログラムを実行する際のワークメモリやデータの一時保存などに利用される。記憶部206は、通信に必要なパラメータ等の各種情報や圧縮符号化された画像データを不図示の記録媒体に記憶する。
操作部207は、デジタルカメラ101を操作するための機能部である。表示部208は、各種表示を行う機能部であり、LCDやLEDのように視覚による情報出力、あるいはスピーカ等の音響による情報出力が可能に構成される。マイク209は、音を取得する機能部である。パケット送受信部210は、各種通信にかかわるパケットを送受信する。
撮像部211は、被写体の光学像を撮像する機能部である。画像処理部212は、撮像部211から出力された撮像画像から所定フォーマットの画像データ(撮像データ)を生成する。また、画像データの輝度や色補正等の各種処理を施す。符号/復号化部213は、画像処理部212から出力された画像データに対して所定の符号化及び復号化を行う。例えば、画像データ圧縮のための、離散コサイン変換、量子化、可変長符号化のような処理を行う。詳しくは後述するが、符号化を行う際には、撮像データを複数の分割撮像データに分割して順次圧縮符号化することにより複数の断片データ(変換済みブロックデータ)を順次生成する。再生部214は、圧縮符号化された画像データ(圧縮撮像データ)を再生する。電源部215は、デジタルカメラ101に電源を供給する。
図2(b)は、ROM204に記憶されたプログラムを制御部203が読み出すことで実現される機能構成を示している。
指示判定部251は、操作部207のボタン等を介してユーザから通信機能の開始を指示されたことを判定する。変換部252は、画像処理部212および符号/復号化部213等を用いてデータ変換を行う。記憶制御部253は、記憶部206を制御し、データの保存やRAM205への読み出しを行う。
表示制御部254は、表示部208を制御して各種表示を行う。受信部255は、パケット送受信部210、無線LAN制御部201等を用いてスマートデバイス102から送信された要求等を受信する。転送開始判定部256は、スマートデバイス102へのデータ転送を開始するか否かを判定する。送信部257は、パケット送受信部210、無線LAN制御部201等を用いてスマートデバイス102への応答やデータ等の送信を行う。
・スマートデバイス
図3は、スマートデバイスの内部構成を示す図である。特に、図3(a)は、スマートデバイスのハードウェア構成を示し、図3(b)は、スマートデバイスの機能構成を示している。
無線LAN制御部301は、無線LAN関連のRF制御、通信処理、プロトコル処理を行う。アンテナ302は、無線LAN通信の電波を送受信する。公衆無線制御部303は、公衆無線通信関連のRF制御、通信処理、プロトコル処理を行う。公衆無線通信には、例えば、IMT(International Multimedia Telecommunications)規格やLTE(Long Term Evolution)規格などに準拠した通信がある。アンテナ304は、公衆無線通信の電波を送受信する。
制御部305は、一つ又は複数のプロセッサによって構成され、ROM306に記憶される制御プログラムを実行することによりスマートデバイス102全体を制御する。ROM306は、制御部305が実行する制御プログラムを記憶する。後述する各種動作は、ROM306に記憶された制御プログラムを制御部305が実行することにより行われる。RAM307は、制御プログラムを実行する際のワークメモリやデータの一時保存などに利用される。記憶部308は、通信に必要なパラメータ等の各種情報を記憶する。
パケット送受信部309は、各種通信にかかわるパケットを送受信する。電源部310は、スマートデバイス102に電源を供給する。表示部311は、各種表示を行うための機能部であり、LCDやLEDのように視覚による情報出力、あるいはスピーカ等の音響による情報出力が可能に構成される。操作部312は、スマートデバイス102を操作するための機能部である。通話部313は、ユーザが通話を行うための機能部であり、マイク314は、音を取得する機能部である。
図3(b)は、ROM306に記憶されたプログラムを制御部305が読み出すことで実現される機能構成を示している。
指示判定部351は、操作部312を介してユーザからアプリケーションの起動等を指示されたことを判定する。記憶制御部352は、記憶部308を制御する。表示制御部353は、表示部311を制御して各種表示を行わせる。受信部354は、パケット送受信部309、無線LAN制御部301等を用いてデジタルカメラ101から送信されたデータや通知等を受信する。送信部355は、パケット送受信部309、無線LAN制御部301等を用いてデジタルカメラ101へのデータ取得要求等の送信を行う。
図2および図3に示した全ての機能ブロックは、ソフトウェアもしくはハードウェア的に相互関係を有するものである。また、図示した機能構成は一例であり、複数の機能ブロックを1つの機能ブロックとして構成してもよいし、何れかの機能ブロックを複数の機能ブロックとして構成してもよい。
<処理の流れ>
以下では、図4〜図9を参照してデジタルカメラ101の動作について説明した後に、図10A〜図11Bを参照して通信システムの各装置で実行される処理の具体例を説明する。
ここでは、デジタルカメラ101とスマートデバイス102間の無線LAN通信104は予め確立されているものとする。また、無線LAN通信104上で行われるメッセージの送受信はHTTP(Hypertext Transfer Protocol)を用いて行われるものとする。また、デジタルカメラ101がHTTPサーバ、スマートデバイス102がHTTPクライアントとして動作し、スマートデバイス102から送信されるリクエストに対してデジタルカメラ101がレスポンスを送信するものとする。さらに、デジタルカメラ101におけるデータ転送処理は、記憶制御部253が、記憶部206に記憶されたデータをRAM205に読み出し、RAM205上のデータを変換部252により変換して転送するものとする。
<デジタルカメラの動作>
図4は、デジタルカメラがデータ転送モードで動作する際のフローチャートである。データ転送モードでの動作は、ユーザがデジタルカメラ101の操作部207を操作することより開始されうるが、これに限られない。例えば、スマートデバイス102からデータ転送モード開始の要求を受信したことを契機に開始されるようにしてもよい。また、ここでは転送されるデータとして、動画像データを例に説明するが、静止画像データや音声データであってもよい。
S401では、デジタルカメラ101は、スマートデバイス102へのデータ転送を既に開始している(転送中(送信中)である)か否かの判定を行う。転送中である場合(S401でYES)はS405へ処理を進め、転送中でない場合(S401でNO)はS402へ処理を進める。
S402では、デジタルカメラ101は、転送開始判定処理を開始する。尚、詳細については図5を参照して後述するが、転送開始判定処理は、転送待機データの有無や、データ転送要求(データ取得要求)の受信の有無に基づき、データ転送を開始するか否かの判定を行う処理を指す。ここで、データ転送要求は、デジタルカメラ101へデータ転送を要求する信号であり、例えば無線LAN通信104によって送信されうる。また、データ転送要求は、GETメソッドとURI(Uniform Resource Identifier)で構成されるHTTPリクエストであり、データの識別子を含みうるが、これに限られない。例えば、データ変換のフォーマットや解像度、品質情報等を含みうる。
S403では、デジタルカメラ101は、S402でスマートデバイス102へのデータ転送を開始すると判定したか否かの判定を行う。データ転送を開始すると判定した場合(S403でYES)はS404へ処理を進め、データ転送を開始しないと判定した場合(S403でNO)はS401へ処理を戻す。
S404では、デジタルカメラ101は、転送対象ブロック設定処理を開始する。尚、詳細については図6を参照して後述するが、転送対象ブロック設定処理は、デジタルカメラ101が転送するブロックデータを設定する処理を指す。ここで、ブロックデータとは、動画像データを所定のサイズ毎に分割して得られる複数の断片データでありうるが、これに限られない。例えば、動画像データを既定時間毎に分割した複数の断片データでありうるし、動画像データの1フレームを部分領域毎に分割した複数の断片データでありうる。
S405では、デジタルカメラ101は、データ転送処理を開始する。尚、詳細については図7を参照して後述するが、データ転送処理は、転送対象のブロックデータを記憶部206からRAM205に読み出し、変換を行った後にスマートデバイス102へ転送する処理を指す。
S406では、デジタルカメラ101は、データ転送モードを終了するか否かの判定を行う。ここで、データ転送モードを終了するか否かの判定は、ユーザの操作部207の操作による終了指示の有無により判定しうるが、これに限られない。例えば、スマートデバイス102からデータ転送モードの終了指示を受信したことを契機に終了されてもよいし、デジタルカメラ101におけるデータ転送が一定期間ないことを契機に終了されてもよい。データ転送モードを終了する場合(S406でYES)は本処理を終了し、データ転送モードを終了しない場合(S406でNO)はS401へ処理を戻す。
図5は、転送開始判定処理(S402)の詳細フローチャートである。上述のように、転送開始判定処理(S402)は、少なくともデジタルカメラ101においてデータ転送を実行中でない(S401でNO)ときに実行される。
S501では、デジタルカメラ101は、転送待機データがあるか否かの判定を行う。ここで、転送待機データとは、スマートデバイス102からデータ転送要求を受信した際に、その時点では転送を開始していない、すなわち、転送中のデータ転送が完了した後に転送を開始すると判定されたデータである。転送待機データがある場合(S501でYES)はS505へ進み、転送待機データがない場合(S501でNO)はS502へ処理を進める。
尚、転送待機データは、データ転送要求の要求元のスマートデバイス102である転送待機端末と紐付られて、データ転送要求を受信した順にリスト形式で「転送待機データリスト」として記憶されうる。また、複数のスマートデバイス102から同一データの転送を要求された場合には、当該データに複数のスマートデバイス102が転送待機端末として紐付けて記憶されうる。これにより、データ転送を開始する際、同一データの転送を要求した複数のスマートデバイス102へ並行してデータ送信することが可能となり、計算資源の消費を抑制すると共に、不要なデータ変換処理を削減することができる。
S502では、デジタルカメラ101は、スマートデバイス102からデータ転送要求を受信したか否かの判定を行う。データ転送要求を受信した場合(S502でYES)はS503へ処理を進め、データ転送要求を受信していない場合(S502でNO)はデータ転送を開始しないものとして本処理を終了する。
S503では、デジタルカメラ101は、データ転送要求で指定されたデータを転送対象データとしてセットする。S504では、デジタルカメラ101は、データ転送要求を行った要求元のスマートデバイス102を転送対象端末としてセットする。
一方、S505では、デジタルカメラ101は、転送待機データリストの先頭に記憶されたデータを転送対象データとしてセットする。S506では、デジタルカメラ101は、S505でセットした転送対象データに紐付けて記憶された全ての要求元スマートデバイス102を転送対象端末としてセットする。
S507では、デジタルカメラ101は、転送対象端末における転送開始ブロックとして転送対象データの先頭ブロックデータを記憶する。
S508では、デジタルカメラ101は、転送対象端末に転送許諾応答を送信し、本処理を終了する。ここで、転送許諾応答は、データ転送要求に対するデータ転送の開始を通知する信号であり、例えば、無線LAN通信104によって送信されうる。転送許諾応答は、ヘッダ部に「Transfer−Encoding:chunked」を含み、ステータスコードが「200 OK」であるHTTPレスポンスでありうる。また、当該レスポンスのボディ部には、転送開始ブロックの識別子を含みうるが、これに限られない。例えば、変換後の予測データサイズやデータ転送要求に関する付随データ等を含みうる。
このように、「Transfer−Encoding」を「chunked」とすることで、変換後のデータサイズが確定しない場合であっても、転送許諾応答に引き続きデータ転送開始要求に対するレスポンスとしてデータ送信を行うことができる。
図6は、転送対象ブロック設定処理(S404)の詳細フローチャートである。なお、後述するS715の転送対象ブロック設定処理も同様の処理である。
S601では、デジタルカメラ101は、転送対象ブロックが未セットであるか否かの判定を行う。未セットである場合(S601でYES)はS604へ処理を進め、セットされている場合(S601でNO)はS602へ処理を進める。
S602では、デジタルカメラ101は、セットされている転送対象ブロックが転送対象データの最終ブロックデータであるか否かの判定を行う。最終ブロックデータである場合(S602でYES)はS604へ処理を進め、最終ブロックデータでない場合(S602でNO)はS603へ処理を進める。
S603では、デジタルカメラ101は、転送対象ブロックにセットされている転送対象ブロックの次ブロックのデータをセットし、本処理を終了する。一方、S604では、デジタルカメラ101は、転送対象ブロックに転送対象データの先頭ブロックのデータをセットし、本処理を終了する。
図7は、データ転送処理(S405)の詳細フローチャートである。前述のように、少なくともデジタルカメラ101においてデータ転送を実行中(S401でYES)、または、データ転送を開始する(S403でYES)ときに、本処理が開始されうる。
S701では、デジタルカメラ101は、転送対象ブロックのブロックデータを記憶部206からRAM205に読み出す。
S702では、デジタルカメラ101は、読み出したブロックデータに対してデータ変換処理を行う。ここで、データ変換処理は、既定の変換品質やフォーマットに基づいた変換符号化およびフレーム構成を、全Iフレーム構成から、Iフレーム、Pフレーム、Bフレームの組み合わせの構成に変更する予測符号化を行うことにより実行されうる。ここで、Iフレーム、Pフレーム、Bフレームはそれぞれ、Intra−codedフレーム、Predictedフレーム、Bi−directional Predictedフレームである。尚、データ変換の方法はこれに限定されるものではなく、例えば、スマートデバイス102から受信したデータ転送要求で指定されるフォーマットや品質情報等に基づいた変換がなされうる。
S703では、デジタルカメラ101は、スマートデバイス102からデータ転送要求を受信したか否かの判定を行う。データ転送要求を受信した場合(S703でYES)はS704へ処理を進め、データ転送要求を受信していない場合(S703でNO)はS705へ処理を進める。
S704では、デジタルカメラ101は、並行転送開始判定処理を開始する。尚、詳細については図8を参照して説明するが、並行転送開始判定処理は、データ転送要求の要求元スマートデバイス102へ転送中のデータを並行して転送開始するか否かを判定する処理を指す。
S705では、デジタルカメラ101は、変換済みデータを記憶する。
S706では、デジタルカメラ101は、転送対象ブロックの変換が完了したか否かを判定する。完了していないと判定した場合はS702に戻り、完了したと判定した場合は、以下に説明する変換済みブロックデータの送信処理(S707〜S710)を全ての転送対象端末を対象として並列的に実行する。なお、ここでは「並列」という表現を用いているが、正確にはS707〜S710の処理を全ての転送対象端末に対して順次実行することを意味する。これは、デジタルカメラ101と各転送対象端末(スマートデバイス102)との間はユニキャスト通信であることに起因する。
S707では、デジタルカメラ101は、データ送信を実行する。ここで、データ送信は、ヘッダ部に「Transfer−Encoding:chunked」を含む。また、ボディ部は、ステータスコードが「200 OK」のHTTPレスポンスであり、変換済みブロックデータと当該ブロックデータのデータサイズ情報を含みうるが、これに限るものではない。例えば、ボディ部は、転送対象ブロックの識別子(当該ブロックが転送対象データのどの部分に該当するかを示す情報)等を含みうる。
S708では、デジタルカメラ101は、転送対象データの全ブロックデータを転送対象端末に転送したか否かの判定を行う。ここで、全ブロックデータを転送対象端末に転送したか否かの判定は、S507またはS803において記憶した転送開始ブロックと転送対象ブロックの転送対象データ中におけるオフセット値を比較することにより判定しうるが、これに限られるものではない。例えば、転送開始ブロックと転送対象ブロックの識別子を比較することにより判定してもよい。複数の断片データである全ブロックデータを順次送信し転送が完了した場合(S708でYES)はS709へ処理を進め、全ブロックデータを転送していない場合(S708でNO)は当該転送対象端末に対する繰り返し処理を終了する。
S709では、デジタルカメラ101は、転送対象端末(すなわち、要求元スマートデバイス102)に対してデータ転送終了通知を送信する。データ転送終了通知は、転送対象データの転送完了を通知する信号であり、例えば、無線LAN通信104によって送信されうる。尚、ここでは、データ転送終了通知は、ヘッダ部に「Transfer−Encoding:chunked」を含む。また、ボディ部は、ステータスコードが「200 OK」のHTTPレスポンスであり、ブロックデータのデータサイズ情報を含みうる。ここで、デジタルカメラ101は、送信する変換済みブロックデータは存在しないため、データサイズを0(ゼロ)としてデータ転送終了通知を送信する。これにより、変換後のデータサイズが確定しない状態でデータ転送を開始した場合においても、スマートデバイス102においてデータ転送の完了を確実に把握することができる。
S710では、デジタルカメラ101は、転送対象端末から当該スマートデバイス102を削除し、当該転送対象端末に対する処理を終了する。
S711では、デジタルカメラ101は、変換済みブロックデータをRAM205から破棄する。
S712では、デジタルカメラ101は、転送対象データの転送対象端末が存在するか否かの判定を行う。転送対象端末が存在する場合にはS715へ処理を進め、転送対象端末が存在しない場合にはS713へ処理を進める。
S713では、デジタルカメラ101は、転送対象データをクリアし、S714では、デジタルカメラ101は、転送対象ブロックをクリアし、本処理を終了する。
S715では、デジタルカメラ101は、転送対象ブロック設定処理を開始する。図4を参照して説明したように、S405内のS715における転送対象ブロック設定処理は、S401で転送中と判定された場合に実行される。処理自体は、図6を参照して説明したS404の転送対象ブロック設定処理と同様である。デジタルカメラ101は、転送対象ブロック設定処理が完了すると、本処理を終了する。
以上のように、転送対象データをブロックデータ毎に読み出して変換を行い、同一データの転送要求をしている複数の端末に並行して送信する。この処理により、端末毎にデータ変換処理を行う必要がなくなり、不要なデータ変換処理を削減することができる。また、変換済みブロックデータを、全転送対象端末への転送が完了した時点で速やかに破棄することで、複数のスマートデバイス102にデータ転送を並行して行う場合であっても、計算資源の消費を抑制することができる。
図8は、並行転送開始判定処理(S704)の詳細フローチャートである。前述のように、デジタルカメラ101がデータ転送処理を実行中にデータ転送要求を受信した(S703でYES)ときに、本処理が開始されうる。
S801では、デジタルカメラ101は、データ転送要求で指定されたデータが、現在転送中の転送対象データと同一であるか否かの判定を行う。同一である場合(S801でYES)はS802へ処理を進め、同一でない場合はS805へ処理を進める。
S802では、デジタルカメラ101は、転送対象端末にデータ転送要求の要求元のスマートデバイス102を追加する。
S803では、デジタルカメラ101は、データ転送要求の要求元のスマートデバイス102の転送開始ブロックとして転送対象ブロックを記憶する。
S804では、デジタルカメラ101は、転送受諾応答をデータ転送要求の要求元のスマートデバイス102に送信し、本処理を終了する。
S805では、デジタルカメラ101は、転送待機情報記憶処理を開始する。ここで、転送待機情報記憶処理は、転送対象データの転送が完了した後に、データ転送要求で指定されたデータを要求元スマートデバイス102へ転送開始するための情報を記憶する処理を指す。転送待機情報記憶処理の詳細については図9を参照して後述する。
S806では、デジタルカメラ101は、転送待機応答をデータ転送要求の要求元スマートデバイス102へ送信し、本処理を終了する。
ここで、転送待機応答は、データ転送要求に対して要求の受領を通知する信号であり、例えば、無線LAN通信104によって送信されうる。また、転送待機応答は、ステータスコードが「100 Continue」であるHTTPレスポンスでありうる。
このように、データ転送を待機させる場合にも暫定的な応答を送信することで、スマートデバイス102において要求が受け付けられたことを把握可能となり、不要なデータ転送要求の再送を抑制することができる。また、スマートデバイス102においてデータ転送が待機状態にあることをユーザに通知することができる。
尚、ここでは、転送を待機させるか否かの判定を、データ転送要求で指定されたデータが転送対象データと同一であるか否かにのみ基づいて判定するようにしたが、別の条件を用いて判定してもよい。例えば、データが同一であっても、転送対象データの転送対象端末数が上限に達している場合は転送を待機させると判定してもよい。ここで、転送対象端末数の上限に達しているか否かの判定は、スマートデバイス102と確立可能な通信セッション数が上限に達しているか否かにより行いうる。これにより、データ転送中の通信セッションにおけるスループット等への影響を抑制し、安定したデータ転送を行うことができる。
また、転送中のデータの累計転送時間が閾値以上である場合には、転送待機させると判断してもよい。これにより、転送対象データと同一のデータの転送を連続して要求された場合に、転送待機状態にあるスマートデバイス102へのデータ転送を適切なタイミングで開始することができる。
図9は、転送待機情報記憶処理(S805)の詳細フローチャートである。前述のように、少なくともデジタルカメラ101においてデータ転送要求を受信した際、即時に転送を開始しないと判定した(S801でNO、または、S802でNO)ときに、本処理が開始されうる。
S901では、デジタルカメラ101は、データ転送要求で指定されたデータが転送待機データリストに登録済みであるか否かの判定を行う。登録済みである場合(S901でYES)はS904へ処理を進め、登録済みでない場合(S901でNO)はS902へ処理を進める。
S902では、デジタルカメラ101は、転送待機データリストにデータ転送要求で指定されたデータを登録する。
S903では、デジタルカメラ101は、当該データの転送待機端末に、データ転送要求の要求元スマートデバイス102を登録し、本処理を終了する。一方、S904では、デジタルカメラ101は、転送待機データリストに登録済みの当該データの転送待機端末に、データ転送要求の要求元スマートデバイス102を追加し、本処理を終了する。
以上説明したとおり第1実施形態に係る通信装置(デジタルカメラ101)は、第1の外部装置(スマートデバイス102A)からデータの転送要求を受信すると、当該データを複数のブロックに分割して転送する。そして、当該データを第1の外部装置に転送中に第2の外部装置(スマートデバイス102B)から同一のデータの転送要求を受信した場合、現在送信しているブロックに後続するブロックから、第1と第2の外部装置に並列的に送信する。これにより、通信装置は、不要なデータ変換処理を削減することが出来、計算資源の消費が抑制された効率的なデータ転送が可能となる。また、第2の外部装置においては、転送要求を送信してからデータの受信を開始するまでの待機時間が短くなるという利点もある。
<具体的な処理例>
通信システムで実行される処理の流れについて、いくつかの状況を想定してより具体的に説明する。
・処理例1
処理例1では、デジタルカメラ101が、スマートデバイス102Aへのデータ転送を実行中に、スマートデバイス102Bからデータ転送要求を受信する形態について説明する。特に、スマートデバイス102Bから、スマートデバイス102Aへ転送しているデータ(データX)と同一のデータの転送要求を受信する。
デジタルカメラ101は、データ転送要求の指定するデータがスマートデバイス102Aに転送中のデータと同一であるため、転送対象ブロックのブロックデータからスマートデバイス102Bへ並行して転送を開始する。デジタルカメラ101は、スマートデバイス102Aへの全ブロックデータの転送が完了すると、スマートデバイス102Aへのデータ転送を終了し、スマートデバイス102Bへ未転送のデータブロックの転送を継続する。その後、デジタルカメラ101は、スマートデバイス102Bへの全ブロックデータの転送が完了すると、スマートデバイス102Bへのデータ転送を終了する。
尚、処理例1においては、デジタルカメラ101およびスマートデバイス102A〜102Bの無線LAN通信104の確立は完了しているものとし、HTTPによるメッセージの送受信が可能な状態であるものとする。また、転送対象のデータX(圧縮撮像データ)はM個(Mは2以上)のブロックデータ(断片データ)に分割される。ここでは、5つの(M=5)ブロックデータに分割され、先頭ブロックデータが「ブロック1」、最終ブロックデータが「ブロック5」であるものとして説明を行う。
図10は、処理例1における動作の流れを示すシーケンス図である。
デジタルカメラ101は、ユーザがデータ転送モードを開始するための操作を行う(M1001)。デジタルカメラ101は、この時点ではデータ転送中でないため(S401でNO)、転送開始判定処理を開始する(S402)。スマートデバイス102Aにおいて、ユーザがデータ転送モードを開始するための操作を行い(M1002)、データXの転送指示を行う(M1003)。当該指示が行われると、スマートデバイス102Aはデジタルカメラ101にデータ転送要求を送信する(M1004)。
デジタルカメラ101は、この時点で転送待機データは存在しないため(S501でNO)、データ転送要求を受信すると(S502でYES)、転送対象データにデータXをセットする(M1005、S503)。デジタルカメラ101は、転送対象データをセットすると、転送対象端末にスマートデバイス102Aをセットする(M1006、S504)。デジタルカメラ101は、転送対象端末をセットすると、スマートデバイス102の転送開始ブロックとして先頭ブロック(すなわち「ブロック1」)を記憶する(M1007、S507)。デジタルカメラ101は、転送開始ブロックを記憶すると、スマートデバイス102Aに転送受諾応答を送信する(M1008、S508)。
デジタルカメラ101は、転送受諾応答を送信すると、データ転送を開始すると判定し(S403でYES)、UI表示を更新する(M1009)。デジタルカメラ101は、UI表示を更新すると、転送対象ブロック設定処理を開始する(S404)。
図12は、デジタルカメラにおけるUI表示の例を示す図である。なお、図12のUI表示は、後述のM1027におけるUI表示更新により表示されるものに相当する。M1027の時点では、2台のデバイス(スマートデバイス102A及び102B)にデータXを送信するため、2台のデバイスそれぞれについて、表示1201〜1203に示す情報を表示している。M1009におけるUI表示更新では、1台のデバイス(スマートデバイス102A)にデータXを送信するため、1台のデバイスについて、表示1201〜1203に示す情報が表示される。
表示1201は、接続先のスマートデバイスに関する情報であり、スマートデバイスのデバイス名やIPアドレスが表示されるが、これに限られない。例えば、スマートデバイスのMACアドレスやサービス名等が表示されうる。表示1202は、スマートデバイスとの切断を指示するボタンである。表示1203は、スマートデバイスとの連携状態に関する情報である。連携状態に関する情報は、転送中、転送待機中、転送完了等のデータ転送状況の情報であり、デジタルカメラ101とスマートデバイスとの間のメッセージの送受信に応じて転送の進捗や対象データの情報等を表示しうる。また、転送状況以外の情報が表示されてもよく、ユーザがデジタルカメラ101とスマートデバイスの連携状態を認識可能な任意の情報が表示しうる。
上述の表示1201〜1203を、接続中のスマートデバイス毎に表示することで、ユーザはデジタルカメラ101の接続先スマートデバイスや通信状況を容易に認識することができる。ここでは、スマートデバイス102AにデータXを転送中であるため、データXを転送中である旨をスマートデバイス102Aに関する表示1203として表示する。
デジタルカメラ101は、転送対象ブロック設定処理を開始すると、この時点で転送対象ブロックは未セットの状態であるため(S601でYES)、転送対象ブロックに先頭ブロックデータ(すなわち「ブロック1」)をセットする(M1010、S604)。デジタルカメラ101は、転送対象ブロックをセットすると、データ転送処理を開始する(S405)。デジタルカメラ101は、データ転送処理を開始すると、転送対象ブロック(すなわち「ブロック1」)のデータを記憶部206からRAM205に読み出す(M1011、S701)。
デジタルカメラ101は、転送対象ブロックのデータを読み出すと、データ変換処理を開始する(M1012、S702)。デジタルカメラ101は、データ変換処理を開始すると、この時点ではデータ転送要求を受信していないため(S703でNO)、変換済みデータをRAM205上に確保された所定のメモリ領域に一時的に記憶する(M1013、S705)。デジタルカメラ101は、データ変換処理と変換済みデータのRAM205への一時的な記憶を繰り返す。転送対象ブロックの変換が完了すると(M1014、S706でYES)、転送対象端末であるスマートデバイス102Aに変換済みブロックデータの送信を開始する(M1015、S707)。
デジタルカメラ101は、データ送信が完了すると、変換済みブロックデータを破棄する(M1016、S711)。すなわち、この時点ではデータXの全ブロックデータの転送が完了しておらず(S708でNO)、転送対象端末はスマートデバイス102Aのみであるためである。
デジタルカメラ101は、変換済みブロックデータを破棄すると、転送対象端末が存在するため(S712でYES)、転送対象ブロック設定処理を開始する(S715)。デジタルカメラ101は、転送対象ブロック設定処理を開始すると、転送対象ブロックには最終ブロックデータではない「ブロック1」がセットされている。そのため(S601でNO、S602でNO)、転送対象ブロックに「ブロック2」をセットする(M1017、S603)。
デジタルカメラ101は、転送対象ブロックをセットすると、データ転送処理の終了指示はなく(S406でNO)、データXの転送中であるため(S401でYES)、データ転送処理を再び開始する(S405)。M1018〜M1020は、M1011〜M1013と同様の処理であるため説明を省略する。
ここで、スマートデバイス102Bにおいて、データ転送モードを開始するための操作をユーザから受け付ける(M1021)。また、データXの転送指示をユーザから受け付ける(M1022)。当該指示が行われると、スマートデバイス102Bはデジタルカメラ101にデータ転送要求を送信する(M1023)。
デジタルカメラ101は、データ転送要求を受信すると(S703でYES)、並行転送開始判定処理を開始する(S704)。ここでは、転送中のデータとデータ転送要求で指定されたデータが同一であるため(S801でYES)、転送対象端末にデータ転送要求の要求元であるスマートデバイス102Bを追加する(M1024、S802)。デジタルカメラ101は、転送対象端末を追加すると、データ転送要求の要求元であるスマートデバイス102Bの転送開始ブロックとして転送対象ブロックである「ブロック2」を記憶する(M1025、S803)。デジタルカメラ101は、転送開始ブロックを記憶すると、スマートデバイス102Bに転送受諾応答を送信する(M1026、S804)。デジタルカメラ101は、転送受諾応答を送信すると、UI表示を更新する(M1027)。ここでは、スマートデバイス102AへのデータXの転送に加えてスマートデバイス102BへのデータXの転送が開始されるため、スマートデバイス102Bに関する情報が追加表示される。
その後、デジタルカメラ101は、転送対象ブロックの変換が完了する(M1028、S706でYES)。そして、転送対象端末であるスマートデバイス102Aおよび102Bの両方に変換済みブロックデータの送信を開始する(M1029、M1030、S707)。以降、デジタルカメラ101は、最終ブロック(すなわち「ブロック5」)の送信が完了するまで、M1016〜M1020およびM1028〜M1030と同様の処理を各ブロックについて行う。
M1034の完了後、デジタルカメラ101は、スマートデバイス102AについてはデータXを構成する全ブロックデータの転送が完了する(S708でYES)。そのため、スマートデバイス102Aにデータ転送終了通知を送信する(M1035、S709)。デジタルカメラ101は、データ転送終了通知を送信すると、UI表示を更新する(M1036)。ここでは、スマートデバイス102AへのデータXの転送を完了したため、データXの転送を完了した旨をスマートデバイス102Aに関する情報1203として表示する。スマートデバイス102Aは、データ転送終了通知を受信すると、データXを保存する(M1037)。デジタルカメラ101は、UI表示を更新すると、データXの転送対象端末からスマートデバイス102Aを削除する(M1038、S710)。
一方、M1034の完了後も、デジタルカメラ101は、スマートデバイス102BについてはデータXを構成する全ブロックデータの転送が完了していない(S708でNO)。そのため、スマートデバイス102Bにはデータ転送終了通知を送信せず、変換済みブロックデータをRAM205から破棄する(M1039、S711)。
デジタルカメラ101は、変換済みブロックデータを破棄すると、転送対象端末にはスマートデバイス102Bがまだ存在しているため(S712でYES)、転送対象ブロック設定処理を開始する(S715)。
ここでは、転送対象ブロックに最終ブロックである「ブロック5」がセットされているため(S601でNO、S602でYES)、転送対象ブロックに先頭ブロックデータである「ブロック1」を再度セットする(M1040、S604)。M1041〜M1044は、M1011〜M1014と同様の処理であるため説明を省略する。
デジタルカメラ101は、「ブロック1」の変換が完了すると、転送対象端末であるスマートデバイス102Bに変換済みブロックデータの送信を開始する(M1045、S707)。
デジタルカメラ101は、変換済みブロックデータの送信が完了すると、スマートデバイス102BについてもデータXを構成する全ブロックデータの転送が完了する(S708でYES)。そのため、スマートデバイス102Bにデータ転送終了通知を送信する(M1046、S709)。デジタルカメラ101は、データ転送終了通知を送信すると、UI表示を更新する(M1047)。ここでは、スマートデバイス102BへのデータXの転送を完了したため、データXの転送を完了した旨をスマートデバイス102Bに関する情報1203として表示する。スマートデバイス102Bは、データ転送終了通知を受信すると、データXを保存する(M1048)。
一方、デジタルカメラ101は、UI表示を更新すると、データXの転送対象端末からスマートデバイス102Bを削除する(M1049、S710)。デジタルカメラ101は、転送対象端末を削除すると、変換済みブロックデータをRAM205から破棄する(M1050、S711)。デジタルカメラ101は、変換済みブロックデータを破棄すると、この時点で転送対象端末が存在しない。すなわち、全転送対象端末へのデータ転送が完了しているため(S712でNO)、転送対象データおよび転送対象ブロックをクリアする(M1051、M1052、S713、S714)。
以上のように、処理例1では、デジタルカメラ101は、転送要求で指定されたデータが転送中のデータと同一である場合に、その時点で転送対象となっているブロックデータから並行して転送を開始する。これにより、デジタルカメラ101がデータ転送中であっても、スマートデバイス102はデータ受信を即時に開始することが可能となり、転送完了までの時間も短縮することができる。また、デジタルカメラ101において、複数のスマートデバイス102へ同一のデータを並行して送信することにより、不要なデータ変換処理を削減することが出来、計算資源の消費を抑制することができる。
・処理例2
処理例2では、デジタルカメラ101が、スマートデバイス102Aへのデータ転送中にスマートデバイス102Bからデータ転送要求を受信する。特に、スマートデバイス102Bから、スマートデバイス102AへのデータXと異なるデータYの転送要求を受信する。
デジタルカメラ101は、データ転送要求の指定するデータがスマートデバイス102Aに転送中のデータと異なるため、スマートデバイス102Bへの転送を開始せず、転送待機データとして登録する。デジタルカメラ101は、スマートデバイス102Aへの全ブロックデータの転送が完了すると、スマートデバイス102Aへのデータ転送を終了し、スマートデバイス102Bへのデータ転送を開始する。
尚、処理例2においては、デジタルカメラ101およびスマートデバイス102A〜102Bの無線LAN通信104の確立は完了しているものとし、HTTPによるメッセージの送受信が可能な状態であるものとする。また、転送対象のデータ(データX、データY)は双方とも5つのブロックデータに分割され、先頭ブロックデータが「ブロック1」、最終ブロックデータが「ブロック5」であるものとして説明を行う。
図11は、処理例2における動作の流れを示すシーケンス図である。なお、M1101〜M1120は、M1001〜M1020と同様の処理であるため説明を省略する。
スマートデバイス102Bは、データ転送モードを開始するための操作をユーザから受け付ける(M1121)。また、デジタルカメラ101に対してスマートデバイス102Aへ転送中のデータとは異なるデータYの転送指示をユーザから受け付ける(M1122)。当該指示が行われると、スマートデバイス102Bはデジタルカメラ101にデータ転送要求を送信する(M1123)。
デジタルカメラ101は、データ転送要求を受信すると(S703でYES)、並行転送開始判定処理を開始する(S704)。デジタルカメラ101は、並行転送開始判定処理を開始すると、転送中のデータとデータ転送要求で指定されたデータが異なるため(S801でNO)、転送待機情報記憶処理を開始する(S805)。デジタルカメラ101は、転送待機情報記憶処理を開始すると、データ転送要求で指定されたデータYが転送待機データとして未登録であるため(S901でNO)、転送待機データにデータYを新規登録する(M1124、S902)。
デジタルカメラ101は、転送待機データを登録すると、データYの転送待機端末としてスマートデバイス102Bを登録する(M1125、S903)。デジタルカメラ101は、転送待機端末を登録すると、スマートデバイス102Bに転送待機応答を送信する(M1126、S806)。すなわち、スマートデバイス102AへのデータXの転送完了(M1133)に先立ってスマートデバイス102Bに転送待機応答を送信する。デジタルカメラ101は、転送待機応答を送信すると、UI表示を更新する(M1127)。ここでは、スマートデバイス102BへのデータYの転送を待機するため、データYの転送を待機している旨をスマートデバイス102Bに関する表示1203として表示する。
その後、デジタルカメラ101は、転送対象ブロックの変換が完了すると(M1128、S706でYES)、転送対象端末であるスマートデバイス102Aにのみ変換済みブロックデータの送信を開始する(M1129、S707)。デジタルカメラ101は、データ送信が完了すると、この時点ではスマートデバイス102AにデータXの全ブロックデータの転送が完了していないため(S708でNO)、変換済みブロックデータをRAM205から破棄する(M1130、S711)。デジタルカメラ101は、変換済みブロックデータを破棄すると、転送対象端末が存在するため(S712でYES)、転送対象ブロック設定処理を開始する(S715)。以降、デジタルカメラ101は、最終ブロック(すなわち「ブロック5」)の送信が完了するまで、M1116〜M1120およびM1128〜M1129と同様の処理を各ブロックについて行う。
M1132の完了後、デジタルカメラ101は、スマートデバイス102AへのデータXを構成する全ブロックデータの転送が完了する(S708でYES)。そのため、スマートデバイス102Aにデータ転送終了通知を送信する(M1133、S709)。デジタルカメラ101は、データ転送終了通知を送信すると、UI表示を更新する(M1134)。ここでは、スマートデバイス102AへのデータXの転送を完了したため、データXの転送を完了した旨をスマートデバイス102Aに関する表示1203として表示する。また、スマートデバイス102BへデータYの転送を開始するため、データYの転送を開始した旨をスマートデバイス102Bに関する表示1203として表示する。スマートデバイス102Aは、データ転送終了通知を受信すると、データXを保存する(M1135)。
デジタルカメラ101は、UI表示を更新すると、データXの転送対象端末からスマートデバイス102Aを削除する(M1136、S710)。M1137〜M1139は、M1050〜M1052と同様の処理であるため、説明を省略する。その後、デジタルカメラ101は、この時点ではデータ転送中でないため(S401でNO)、転送開始判定処理を開始する(S402)。
デジタルカメラ101は、転送開始判定処理を開始すると、転送待機データが存在するため(S501でYES)、転送対象データに転送待機データリストの先頭に登録されているデータ(すなわち、データY)をセットする(M1140、S505)。デジタルカメラ101は、転送対象データをセットすると、転送対象端末に転送待機端末として登録されている端末、すなわち、スマートデバイス102Bをセットする(M1141、S506)。
デジタルカメラ101は、転送対象端末をセットすると、スマートデバイス102Bの転送開始ブロックとして先頭ブロックデータ(すなわち「ブロック1」)を記憶する(M1142、S507)。デジタルカメラ101は、転送開始ブロックを記憶すると、スマートデバイス102Bに転送受諾応答を送信する(M1143、S508)。デジタルカメラ101は、転送受諾応答を送信すると、UI表示を更新する(M1144)。ここでは、スマートデバイス102BへのデータYの転送を完了したため、データYの転送を完了した旨をスマートデバイス102Bに関する表示1203として表示する。以降、M1145〜M1163は、M1110〜M1120およびM1128〜M1139と同様の処理を行い、スマートデバイス102BへデータYの転送を実行する。
以上のように、処理例2では、デジタルカメラ101は、転送要求で指定されたデータが転送中のデータと異なる場合に、転送待機応答を暫定的に送信する。すなわち、その時点では転送を開始せず転送待機データリストに当該データと要求元のスマートデバイス102を登録する。転送待機応答を暫定的に送信することにより、スマートデバイス102Bは、データ転送要求が受け付けられたことを把握でき、不要なデータ転送要求の再送を抑制することができる。また、データ転送が待機状態にあることをユーザに通知することができる。
・上述の処理例の変形例
各処理例において、デジタルカメラ101は、ブロックデータの変換を変換済みブロックデータの送信が完了したことを契機に開始するようにしたが、これに限られない。例えば、ブロックデータの変換が完了したことを契機に変換済みブロックデータの送信と並行して次のブロックデータの変換を開始しうる。これにより、スマートデバイス102における待機時間をさらに抑制することができる。また、デジタルカメラ101においてデータ送信はブロックデータの変換が完了したことを契機に開始するようにしたが、これに限られない。例えば、変換済みブロックデータの送信が完了したことを契機に、変換が完了しているブロックデータの一部の送信を開始しうる。これにより、スマートデバイス102は、送信処理が変換処理よりも早く終了した場合に、ブロックデータの変換処理の完了を待機することなく、データの受信を継続することができる。
各処理例において、デジタルカメラ101は、N番目(1≦N≦M)の変換済みブロックデータをRAM205の所定のメモリ領域に格納した。そして、N番目の変換済みブロックデータの並行送信が完了後に、N番目の変換済みブロックデータを即時に破棄するよう説明した。また、N番目の変換済みブロックデータを破棄した後に、N+1番目の変換済みブロックデータを生成するよう説明した。ただし、例えば、RAM205が複数のブロックデータを保持可能である場合は可能な限り保持し、RAM205の容量が逼迫した時点で最も古いデータから破棄しうる。これにより、デジタルカメラ101において、他のスマートデバイス102からデータ転送開始要求を受信した際に、RAM205に保持されている複数の変換済みブロックデータを順次転送することが可能となり、不要な変換処理をさらに抑制することができる。
各処理例において、デジタルカメラ101は、データ送信を「Transfer−Encoding」を「chunked」としたデータ転送開始要求に対するHTTPレスポンスにより送信するようにしたが、これに限られない。例えば、スマートデバイス102から送信される各ブロックデータのデータ転送要求であるHTTPリクエストに対するHTTPレスポンスとしてデータを送信しうる。この場合、転送許諾応答やデータ転送終了通知についても、「Transfer−Encoding」が「chunked」でないHTTPレスポンスを送信しうる。
各処理例において、デジタルカメラ101がHTTPサーバ、スマートデバイス102がHTTPクライアントとしてメッセージの送受信を行うようにした。しかし、スマートデバイス102がHTTPサーバ、デジタルカメラ101がHTTPクライアントであってもよい。この場合、デジタルカメラ101から送信されるリクエストに対してスマートデバイス102がレスポンスを送信することにより、各メッセージを送受信しうる。また、メッセージの送受信はHTTP以外のプロトコルが用いられてもよく、これに限られない。例えば、TCP(Transmission Control Protocol)ベースのプロトコルであるPTP(Picture Transfer Protocol)やFTP(File Transfer Protocol)等でありうる。また、UDP(User Datagram Protocol)ベースのプロトコルであってもよい。
各処理例において、デジタルカメラ101は、転送対象データを記憶部206からRAM205にブロックデータ毎に読み出して変換を行い、送信するようにしたが、これに限られない。例えば、転送対象データの全データに対して変換処理を行い、記憶部206に記憶した後に、当該変換済みデータを記憶部206からRAM205にブロックデータ毎に読み出して送信しうる。この場合、デジタルカメラ101は、全転送対象端末へのデータ送信が完了したことを契機に記憶部206に記憶された変換済みデータを削除しうるが、これに限られない。例えば、全スマートデバイス102との無線LAN通信104の切断検知や電源OFF、データ転送完了から一定期間が経過したこと等を契機に削除されうる。このように、変換済みデータの削除を適切なタイミングで行うことで、データ転送完了後に当該データの転送を要求された場合にも、記憶部206から変換済みデータを読み込み可能であり、不要な変換処理を抑制することができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。