<第1の実施形態>
以下、本発明の例示的な実施形態について図を参照して説明するが、本発明は以下の実施形態に限定されない。また、種々の実施形態は適宜組み合わせてもよい。
[デジタルカメラの構成]
以下の説明では、本発明に係る撮像装置の一例として、静止画や動画が撮影可能なデジタルカメラについて説明する。なお、いわゆるカメラ付き携帯電話やカメラ付きのタブレットデバイスのように、デジタルカメラを備えた機器も撮像装置の一例である。
図1は、本実施形態に係るデジタルカメラ100の構成を示すブロック図である。
制御部101は、例えば、CPU(MPU)、メモリ(DRAM、SRAM)などからなり、各種処理(プログラム)を実行してデジタルカメラ100の各ブロックを制御したり、各ブロック間でのデータ送信を制御したりする。また制御部101は、ユーザからの操作を受け付ける操作部102からの操作信号に応じて、デジタルカメラ100の各ブロックを制御する。
操作部102は、例えば、電源ボタン、ズーム調整ボタン、オートフォーカスボタンなどの撮影に関連する各種操作を入力するスイッチ類からなる。また、メニュー表示ボタン、決定ボタン、その他カーソルキー、ポインティングデバイス、タッチパネル等で構成することが可能であり、ユーザによりこれらのキーやボタンが操作されると制御部101に操作信号を送信する。さらに操作部102はレリーズボタンを含み、レリーズボタンはいわゆる半押し状態で押下されるSW1と、いわゆる全押し状態で押下されるSW2とから構成される。SW1の押下により撮影準備指示が出力され、SW2の押下により撮影指示が出力される。なお、本実施形態では、静止画撮影のためのレリーズボタンと動画撮影のためのレリーズボタンは共用しているが、別のボタンとすることも可能である。
バス103は、各種データ、制御信号、指示信号などをデジタルカメラ100の各ブロックに送るための汎用バスである。
撮像部110は、レンズにより取り込まれた被写体の光学像を、絞りにより光量を制御して、CCDセンサやCMOSセンサ等の撮像素子により画像信号に変換する。
また、音声入力部120は、例えば、内蔵された無指向性のマイクまたは音声入力端子を介して接続された外部マイク等により、デジタルカメラ100の周囲の音声を集音する。
メモリ104は、例えばRAM(Random Access Memory)やフラッシュメモリであって、画像信号および音声信号、デジタルカメラ100の設定情報などを一時的に記録する揮発性メモリと不揮発性メモリの双方が備わる。
記録媒体141は、デジタルカメラ100に接続可能な記録媒体である。記録媒体141は、デジタルカメラ100で生成した各種データなどを記録することができる。記録媒体141の例としては、例えばハードディスク、光ディスク、フラッシュメモリなどがあげられる。本実施形態では、いわゆるメモリカードと呼ばれるデジタルカメラ100に装着可能なフラッシュメモリ装置を例に説明する。
音声出力部151は、例えば音声出力端子からなり、接続されたイヤホンやスピーカなどから音声を出力させるために音声信号を送信する。また、音声出力部151は、デジタルカメラ100に内蔵されてもよい。
映像出力部150は、例えば映像出力端子からなり、接続された外部ディスプレイ等に映像を表示させるために画像信号を送信する。また、音声出力部151、映像出力部150は、統合された1つの端子、例えばHDMI(登録商標)端子のような端子であってもよい。
本実施形態に係るデジタルカメラ100はネットワークを介して他の機器と通信部152を通じて通信可能である。通信部152は、RS232C、USB、IEEE1394、P1284、SCSI、モデム、LAN、IEEE802.11などの通信インターフェイスにより、外部デバイスとの間でシリアルまたはパラレル通信によるデータの送受信を有線または無線で行う。また、通信インターフェイスに則って通信プロトコルを実行することで、外部デバイスとデータを送受信することが可能となる。通信プロトコルの一例として、HTTP(Hyper Text Transfer Protocol)やPTP−IP(Picture Transfer Protocol over IP)などが挙げられる。
表示部130は、記録媒体141に記録された画像データや各種メニューなどのGUIを表示する。表示部130は例えば、液晶ディスプレイ、有機ELディスプレイ等を用いることができる。
[パーソナルコンピュータ(PC)の構成]
以下の説明では、情報処理装置の一例として、静止画や動画が取り込み可能なパーソナルコンピュータ(PC)について説明する。なお、プリンタ、いわゆるタブレット型PCやスマートフォン、インターネットテレビなども情報処理装置の一例である。
図2は、本実施形態に係るPC200の構成を示すブロック図である。
PC200は、表示部201と、操作部202と、CPU203と、一次記憶装置204と、二次記憶装置205と、通信装置206とから構成されている。各構成の基本的な機能はデジタルカメラ100と同様であるから、ここでは詳細な説明は省略する。なお、表示部201にはLCDなどのディスプレイ装置が用いられる。また表示部201はPC200が備える必要はなく、PC200は表示部201の表示を制御する表示制御機能を有していればよい。また、二次記憶装置205はハードディスクドライブや外部記憶媒体を読み出しおよび書き込みを行う装置であってよい。外部記録媒体としては、DVD−RWドライブ、CD−ROM、CD−R、DVD−RAMなどの光ディスクや、フレキシブルディスク、MOなどの磁気ディスク、またフラッシュメモリなどの不揮発性メモリなどが例示できる。さらに、操作部202としては、キーボードやマウス、またタッチパネルを用いることが可能である。
通信装置206に用いられる通信インターフェイスやプロトコルは、デジタルカメラ100と同様であるため説明は割愛する。PC200は、この通信装置206を用いて、外部デバイスとデータを送受信することが可能となる。
[デジタルカメラとPCの接続形態について]
以下の説明では、デジタルカメラとPCのネットワーク参加形態の一例として、インフラストラクチャでの接続形態について説明する。なお、デジタルカメラとPCが1対1の接続のみでよい場合は、アドホック、またはWi−Fi Directで接続する形態も一例である。Wi−Fi Directは、無線LANの普及促進団体、Wi−Fiアライアンスが策定した仕様である。この仕様によれば、アクセスポイントがなくても無線LAN搭載の携帯電話やタブレット、PC、デジタルカメラカメラ、プリンタ、携帯用ゲーム機などデバイス同士を無線で接続することができる。
図3は、デジタルカメラ100と複数台のPC200が参加するネットワークの構成を示す概念図である。
301はルーターである。ルーターは、ネットワークの構築、およびネットワークに接続されたポータブルデバイスやPCなどのデバイス間の通信を中継するルーティング機能を提供する。ルーターは、インターネットプロトコルスイートに準拠して、自身に割り振ったIPアドレスをGetewayとしてLANを構成する。また、ルーター301は有線または無線で接続するインターフェイスを有している。有線接続の一例として、LANケーブルでルーターとデバイスを物理的に接続する。無線接続の一例として、IEEE802.11x(xはa,b,g,nなど)に準拠した接続があげられる。ルーターは、SSIDと暗号キーが設定されており、接続デバイスは、SSIDと暗号キーを設定し、承認されることでルーターとの接続が確立される。
有線または無線を通じてLANにポータブルデバイスやPCなどのデバイスが接続されると、接続機器デバイスに対してIPアドレスの割り振りを自動または手動で行う。自動で行う場合の代表的なプロトコルとしてDHCP(Dynamic Host Configuration Protocol)があげられる。そして、デバイス間の通信が行われる際にネットワーク上を流れるデータのプロトコルやIPアドレスを解析し、どの経路を通じて転送すべきかを判断する。
本実施形態では、ルーター301が、Getawayが192.168.0.1のLANを構築している。また、LANに無線接続したデジタルカメラ100には192.168.0.10のIPアドレスが割り当てられている。また、無線接続したPC200(a)の“ComputerA”には192.168.0.20のIPアドレスが割り当てられている。また、無線接続したPC200(b)の“ComputerB”には192.168.0.21のIPアドレスが割り当てられている。また、有線接続したPC200(c)の“ComputerC”には192.168.0.22のIPアドレスが割り振られている。本実施形態では、上述したインフラストラクチャのネットワークを前提に、デジタルカメラ100からユーザが接続を所望するPC200に接続する方法について説明する。
なお、本実施形態のデジタルカメラ100には、ネットワーク上でデバイス探索を行うためのディスカバリプロトコルであるUPnPおよびBonjourの仕様に則ってPC200と通信が可能なプログラムが二次記憶装置105に記録されている。プログラムには、UPnPおよびBonjourを使用した通信を実行するためのコマンド、およびUPnPおよびBonjourで通信するのに必要なデジタルカメラ100の固有のデバイス情報が記録されている。
また、本実施形態のPC200(a)とPC200(c)には、ディスカバリプロトコルの1つであるUPnPの仕様に則ってデジタルカメラ100と通信が可能なプログラムが二次記憶装置205にインストールされている。プログラムには、UPnPを用いた通信を実行するためのコマンド、およびUPnPで通信するのに必要なPC固有のデバイス情報が記録されている。
また、本実施形態のPC200(b)には、ディスカバリプロトコルの1つであるBonjourの仕様に則ってデジタルカメラ100と通信が可能なプログラムが二次記憶装置205にインストールされている。プログラムには、Bonjourを用いた通信を実行するためのコマンド、およびBonjourで通信するのに必要なPC固有のデバイス情報が記録されている。
また、本実施形態のデジタルカメラ100には、画像を転送するためのプロトコルであるPTP−IPの仕様に則ってPC200と画像ファイルの送受信が可能なプログラムが二次記憶装置105に記録されている。プログラムには、PTP−IPを使用した通信の実行のためのコマンド、PTP−IP通信で転送可能なファイルを定義するオブジェクトフォーマットコード、デジタルカメラのセッティング又は状態条件を識別する情報であるデバイスプロパティが記録されている。
また、本実施形態のPC200(a)、PC200(b)、PC200(c)には、画像ファイルを転送するためのプロトコルであるPTP−IPの仕様に則ってPC200と通信が可能なプログラムが二次記憶装置205にインストールされている。
また、本実施形態のデジタルカメラ100内の記録媒体141およびPC200内の二次記憶装置205には、あらかじめ画像ファイルが保存されている。そして、本実施形態における画像の送信処理は、デジタルカメラ100とPC200がネットワークを介して接続され、デジタルカメラ100から供給された画像ファイルがPC200の二次記憶装置205の任意のディレクトリに保存されることで実現される。
本実施形態は、デジタルカメラ100がディスカバリプロトコルであるUPnPおよびBonjourを用いてPC200と接続して、PTP−IPを用いて画像ファイルをPC200に送信する形態を例にあげて詳細を説明する。ただし、本発明は、本実施形態で記したネットワークの構成、ネットワーク接続方法、ディスカバリプロトコルの種類、転送プロトコルに制限されない。
[デジタルカメラの画像転送処理について]
まず、次の一連の処理におけるデジタルカメラ100の動作について説明する。
(1)デジタルカメラ100とPC200が、ルーター301が構築するネットワークを介して接続する。
(2)デジタルカメラ100から供給された画像ファイルがPC200の二次記憶装置205の任意のディレクトリに保存される。
(3)デジタルカメラ100が、ネットワークから離脱する。
図4は、デジタルカメラ100の基本動作を示すフローチャートである。このフローチャートは、操作部102に含まれる電源ボタンや再生ボタンが押下されたことを制御部101が検知したことに応じて開始される。なお、このフローチャートが示す処理は、各部からの入力信号やプログラムにしたがって、制御部101がデジタルカメラ100の各部を制御することにより実現される。特に断らない限り、他のフローチャートが示す処理についても同様である。
まず、S401において、制御部101はデジタルカメラ100の初期化処理を実行する。初期化処理では、記録媒体141の装着の有無をチェックしたり、撮影準備のために鏡筒を駆動したり、電源ボタンや再生ボタンのどちらが押されたかを判断して、起動するモードを切り替えたりする。モードには、画像ファイルを撮影するための撮影モード、画像ファイルを表示部130に表示して閲覧する再生モード、撮影パラメータを変更するメニューモード、無線接続を実行する無線接続モードがある。本実施形態において、操作部102に含まれる再生ボタンを押下してカメラが起動すると、再生モードで起動し、表示部130に本実施形態における再生モードのGUI(図5(a))を表示する。
S402において、制御部101は無線接続モードが選択されたか否かを検知する。図5(a)のGUIには、無線接続モードに遷移するためのボタンアイコン501が配置されている。ユーザは操作部102を操作してボタンアイコン501を押下すると、制御部101は無線接続モードが選択されたと検知して無線接続モードを起動し、表示部130に図5(b)のGUIを表示してS403へ進む。そうでない場合は、ボタンアイコン501が押下されるまで待機する。
S403において、制御部101は接続デバイスが選択されたか否かを検知する。図5(b)のGUIには、デジタルカメラ100と接続可能なデバイスの一覧がボタンアイコンで表示されており、ボタンアイコンを押下すると、各デバイスと接続する処理へ進む。ボタンアイコン502は接続可能なデバイスの1つであるPC200との接続処理へ進むためのボタンアイコンである。本実施形態では、PC200と接続することを目的とするため、ユーザが操作部102を操作してボタンアイコン502を押下すると、制御部101は接続デバイスが選択されたと検知して表示部130に図5(c)のGUIを表示してS404へ進む。そうでない場合は、接続デバイスのボタンアイコンが押下されるまで待機する。
S404において、制御部101は新規接続であるか否かを検知する。図5(c)のGUIには、接続したことがないPC200と接続するためのボタンアイコン503、または接続したことがあるPC200と再度接続するためのボタンアイコン504が表示されている。ユーザが操作部102を操作してボタンアイコン503を押下すると、制御部101は接続したことがないPC200と接続することを検知し、表示部130に図5(d)のGUIを表示してS405へ進む。ボタンアイコン504が押下された場合は、接続したことがあるPC200と接続することを検知してS406へ進む。
S405において、制御部101はネットワーク接続のための設定項目の入力を受付ける。図5(d)のGUIには、ルーター301に無線接続するために必要な設定項目であるSSID(Service Set Identifier)と暗号キーを入力するテキストボックスが配置されている。なお、SSIDとは、IEEE802.11シリーズの無線LANにおけるアクセスポイントの識別子であり、混信を避けるために付けられる名前
である。また、暗号キーは、SSIDに不正アクセスされないよう無線LANの暗号化を行うためのキーである。ユーザは、不図示のソフトウェアキーボードを表示部130に表示し、操作部102を操作して文字を入力する。制御部101は選択された文字をすべてメモリ104に一時記録する。
S406において、制御部101はネットワーク接続を行う。図5(d)のGUIのボタンアイコン505は無線接続の開始を支持するためのボタンアイコンである。接続したことがないPC200と接続する場合は、ユーザが操作部102を操作してボタンアイコン505を押下すると、制御部101はS405でメモリ104に一時記録したSSIDと暗号キーを基に、ルーター301との接続を開始する。一方、接続したことがあるPC200と再度接続する際に仕様するSSIDや暗号キーは、PC200との接続が成功すると他の情報と併せてペアリング情報としてメモリ104の不揮発性メモリに保存されている。ペアリング情報の詳細については後述する。接続したことがあるPC200と接続する場合、制御部101はメモリ104の不揮発性メモリに記録されたペアリング情報のSSIDと暗号キーをメモリ104のRAMにロードしてルーター301との接続を開始する。ルーター301との接続が確立されると、ルーター301はデジタルカメラ100に対してIPアドレスを割り当てる。制御部101は、割り当てられたIPアドレスをメモリ104のRAMに記録する。
S407において、制御部101はPC200と接続するためのディスカバリ(デバイス探索)を行う。ディスカバリの詳細については後述する。
S408において、制御部101は画像転送サービスを開始する。本実施形態における画像転送サービスは、PTP−IPを用いた画像ファイルの転送処理を指す。S407において接続するPC200が選定されると、PC200はデジタルカメラ100に対してセッションを確立するためのコマンドパケットを送信する。デジタルカメラ100は、通信部152を通じてコマンドパケットを受信すると、制御部101はパケットを解析してセッションを確立する処理を実行する。本実施形態におけるPTP−IPの場合、OpenSessionコマンドがそれにあたる。セッションを確立すると、レスポンスコマンドをPC200に送信した後、表示部130に図5(e)のGUIを表示し、画像転送サービスを開始する。に図5(e)のGUIは、図3のPC200(a)との接続が完了した場合を例にしたGUIである。また、他の例として、表示部130を非表示にしてもよい。
S409において、制御部101はPC200から画像送信要求を受信したか否かを検知する。デジタルカメラ100は、ルーター301を介してPC200から画像ファイルの転送指示を示すコマンドパケットを受信する。制御部101はコマンドパケットを解析して画像ファイルの送信指示を示すコマンドであると検知した場合はS410に進む。そうでない場合は、画像ファイルの送信を指示するコマンドパケットを受信するまで待機する。
S410において、制御部101は画像ファイルをPC200に送信する。送信処理では、コマンドパケットに指定されている画像ファイルを記録媒体141から読取り、メモリ104のRAMにロードする。そして、画像ファイルをパケット単位に分割してPC200へ送信する。そして、画像ファイルのサイズ数のパケットをすべて送信した後、レスポンスコマンドをPC200に送信して、画像送信を完了する。
S411において、制御部101はPC200から画像転送サービスの終了通知を受信したか否かを検知する。PC200からルーター301を介してPC200からデジタルカメラ100とのセッションを終了するコマンドパケットが送信される。本実施形態におけるPTP−IPの場合、CloseSessionコマンドがそれにあたる。制御部101は通信部152を通じて受信したコマンドパケットを解析し、セッションの終了を実行してS412に進む。そうでない場合は、セッションを終了するコマンドパケットを受信するまで待機する。
S412において、制御部101はネットワークから離脱する。ここでは、メモリ104のRAMにロードした画像転送プロトコルに従って動作するプログラムをアンロードし、ディスカバリプロトコルのネットワーク離脱のためのコマンドをネットワークにマルチキャストする。本実施形態のUPnPでは、SSDP:Byebyeをマルチキャストする。Bonjourの場合は、MulticastDNS:goodbyeをマルチキャストする。
以上が、本実施形態におけるデジタルカメラ100の画像転送に関わる基本動作である。デジタルカメラ100は、PC200から画像転送プロトコルの指示に従って送信される指示に従って動作するデバイスの役割を担う。
[PCの画像転送処理について]
次に、上述の(1)〜(3)の処理におけるPC200の動作について説明する。
図6は、PC200の基本動作を示すフローチャートである。このフローチャートは、PC200の起動処理が起動処理が完了している状態から開始される。起動処理では、PC200が不図示の操作部の1つである電源ボタンの押下により起動し、各ハードウェアのチェックなどを行い、CPU203が二次記憶装置205に保存されているオペレーティングシステム(以下、OS)を一次記憶装置204にロードする。
まず、S601において、CPU203はネットワーク接続を行う。ネットワーク接続では、無線または有線の通信装置206から所望のネットワークを構築しているルーター301に対して接続し、CPU203はルーター301から割り振られたIPアドレスを一次記憶装置204に記録する。なお、無線および有線接続の方法については、図3、および図4のS406と同様であるため、説明は割愛する。
S602において、CPU203はディスカバリを行う。ディスカバリ(デバイス探索)を行う。ディスカバリの詳細については後述する。
S603において、CPU203は画像転送サービスの開始を指示する。実施形態における画像転送サービスは、PTP−IPを用いた画像ファイルの転送処理を指す。ここでは、デジタルカメラ100とセッションを確立するためのコマンドパケットを送信する。本実施形態におけるPTP−IPの場合、OpenSessionコマンドがそれにあたる。CPU203は、デジタルカメラ100がコマンドパケットを処理した後に送信するレスポンスパケットを受信し、画像転送サービスを開始したと判断すると、S604に進む。
S604において、CPU203はデジタルカメラ100に対して画像ファイルの送信を指示する。CPU203はPTP−IPの画像ファイルの転送を指示するコマンドパケットを生成し、デジタルカメラ100に送信する。本実施形態におけるPTP−IPの場合、GetObjectコマンドがそれにあたる。なお、GetObjectを行う前にGetDeviceInfoコマンドやGetObjectInfoコマンドを実行してデジタルカメラ100のデバイス情報や記録媒体141に保存されている画像ファイルの数や種類を取得する必要がある。
S605において、CPU203は画像ファイルを受信する。デジタルカメラ100から送信された画像ファイルのデータパケットを二次記憶装置205の任意のディレクトリに保存する。画像ファイルのサイズ数すべてのパケットを受信し終えたら、画像ファイルをファイナライズして保存を完了する。複数枚の画像ファイルの受信があった場合は、上述の処理を繰り返す。
S606において、CPU203は画像転送サービスの終了指示を検知したか否かを判定する。ユーザが、所望する画像ファイルの転送を終え、画像転送サービスを終了させるため表示部201に表示した不図示の画像転送プログラムのGUIに配置された終了ボタンを押下すると、CPU203は画像転送サービスの終了指示を検知し、S607へ進む。そうでない場合は、S604に戻り、デジタルカメラ100に対して画像ファイルの送信指示を再度行う。
S607において、CPU203は画像転送サービスの終了を指示する。ここでは、デジタルカメラ100とのセッションを終了するためのコマンドパケットをデジタルカメラ100に送信する。本実施形態におけるPTP−IPの場合、CloseSessionコマンドがそれにあたる。
CPU203は、デジタルカメラ100がコマンドパケットを処理した後に送信するレスポンスコマンドを受信すると、PC200で画像転送サービス用のプログラムを終了する。
以上が、本実施形態におけるPC200の画像転送に関わる基本動作である。PC200は、デジタルカメラ100に対して画像転送プロトコルに従って画像送信の指示をするコントロールポイントの役割を担う。
[デジタルカメラのディスカバリ処理(初回接続)について]
次に、図4のS407のディスカバリの詳細について説明する。図7は、デジタルカメラ100のディスカバリの動作を示すフローチャートである。
まず、S701において、制御部101は接続したことがないPC200と接続するか否かを検知する。図4のS404にて表示した図5(c)のGUIにて、ボタンアイコン503が選択された場合は接続したことがないPC200と接続すると判定して、S702へ進む。そうでない場合は、接続したことがあるPC200との接続を行うため処理Aへ進む。
S702において、制御部101はネットワークに接続されているPC200の検索を開始する。PC200の検索処理の詳細については、図8に示すフローチャートを参照して説明する。図3において説明した通り、本実施形態のデジタルカメラ100はディスカバリプロトコルであるUPnPとBonjourの双方での通信に対応している。そのため、双方のディスカバリプロトコルで検出されるUPnP対応PCおよびBonjour対応PCを接続対象とする。本実施形態の図3におけるPC200(a)とPC200(c)がUPnP対応PCであり、PC200(b)がBonjour対応PCである。なお、UPnP対応PCの一例はMicrosoft社のWindows(登録商標)OSがインストールされたPCであり、Bonjour対応PCの一例はApple社のMacOS(登録商標)がインストールされたPCである。制御部101は機器検索を開始して、図13(f)のGUIを表示部130に表示する。
S801において、制御部101はSSDP:Aliveメッセージのマルチキャストを受信したか否かを検知する。SSDP(Simple Service Discovery Protocol)は、ネットワーク上のUPnPをサポートするデバイスを探索、発見するためのプロトコルである。SSDP:Aliveは、デバイスがネットワークに接続した際、Advertisementと呼ばれる、自身の存在をネットワーク上のデバイスにマルチキャストする動作を行う。図10(a)のAdvertisementはPC200がAdvertisementするためにマルチキャストしたSSDPデータの一例である。HOSTヘッダは、マルチキャストのIPアドレスを示す。CACHE−CONTROLヘッダは、Advertisementが有効になる時間を秒で示す。LOCATIONヘッダは、PC200のURLを示す。NTタグは、ネットワークに通知するデバイスタイプを示す。SERVERは、PC200のOSを示す。本実施形態の図3では、PC200(a)とPC200(b)がネットワークに接続した後、SSDP:Aliveをマルチキャストする。制御部101は、ネットワーク上のPC200からのSSDP:Aliveを受信したことを検知すると、S802に進む。そうでない場合はS804へ進む。
S802において、制御部101はPC200のデバイス情報を取得のためのHTTP GETを実行する。UPnP対応PCは、自身のデバイス情報をXML(Extensible Markup Language)形式で記載してディスクリプションとして保存している。図11(a)のDescriptionは、PC200が二次記憶装置205に保存しているディスクリプションの一例である。図11(a)のDescriptionはいくつかのタグによって構成されており、例えば、UDNタグはPC200のGUIDを示す。friendryNameタグはPC名を示す。Devicetypeタグはデバイスタイプの種類を示す。また、ServiceTypeタグはPC200が提供可能なサービスを示す。HTTP GETは、HTTPプロトコルに従って通信先からデータを取得するためのメソッドである。制御部101は、S801にてSSDP:Aliveのマルチキャストの受信したことを検知すると、マルチキャストしたPC200に対してディスクリプションの送信を指示する。
S803において、制御部101はディスクリプションを取得する。S802においてPC200がデジタルカメラ100からのディスクリプションの送信指示を受信すると、ディスクリプションをデジタルカメラ100へ送信する。制御部101は、通信部152を通じて取得したディスクリプションをメモリ104のRAMへ保存し、S815へ進む。
S804において、制御部101はMulticastDNS:Notifyメッセージのマルチキャストを受信したか否かを検知する。Notifyメッセージは、MulticastDNSにおいてデバイスがネットワークに接続した際、自身の存在と自身が提供可能なサービスを表すServiceTypeを付加して、ネットワーク上のデバイスにマルチキャストする。本実施形態の図3では、PC200(b)がネットワークに接続した後、PTP−IPでのイニシエータとして動作可能であることを示すServieType“_ptp−init”を付加してNotifyメッセージをマルチキャストする。制御部101は、Notifyメッセージを受信したことを検知すると、S805に進む。そうでない場合はS807へ進む。
S805において、制御部101はTXTレコードを要求する。Bonjour対応PCは、自機のデバイス情報をテキスト形式で記載してTXTレコードとして保存している。図12(a)に、PC200が二次記憶装置205に保存しているTXTレコードの一例を示す。TXTレコードは、ServiceTypeと紐付いており、Keyとその値から構成される。本実施形態におけるPC200からマルチキャストするServiceTypeは“_ptp−init”であり、それに紐付くTXTレコードのVersion KeyはTXTレコードのバージョンを示す。Model Keyは、デバイスのモデルの種類を示す。Product Keyは製品名を示す。Service Available Keyは、サービスが有効になったか否かを示す。有効になった場合はValueが1に更新される。GUID KeyはPC200のGUIDを示す。制御部101は、S802でNotifyメッセージの受信を検知すると、メッセージに付加されたServiceTypeを参照する。そして、画像転送サービスが提供可能であることを示すServiceTypeであった場合、マルチキャストしたPCに対してTXTレコードの送信を指示する。例えば図3の場合、PC200(b)がマルチキャストしたServiceTypeが“_ptp−init”、デジタルカメラ100が検索対象とするPCのServiceTypeが“_ptp−init”であったとする。この場合、PC200(b)に対してTXTレコードの送信を指示する。
S806において、制御部101はTXTレコードを取得する。S805においてPC200がデジタルカメラ100からのTXTレコードの送信指示を受信すると、TXTレコードをデジタルカメラ100へ送信する。制御部101は、通信部152を通じて取得したTXTレコードをメモリ104のRAMへ保存し、S815へ進む。
S807において、制御部101はSSDPのM−Searchを開始する。M−Searchはネットワーク上のUPnP対応デバイスを検出するメソッドである。図10(b)のM−Searchは、M−Searchを実行するためのSSDPデータの一例である。HOSTヘッダは、マルチキャストのIPアドレスを示す。STヘッダは、検索対象とするデバイスタイプを示す。MXヘッダは、検索が有効になる時間を分で示す。
S808において、制御部101はMulticastDNSのQueryを開始する。Queryは、ネットワーク上のBonjour対応デバイスを検出するメソッドであり、検索対象とするServiceTypeを指定してQueryする。
S809において、制御部101はSSDPレスポンスがあるか否かを検出する。S807にてM−Searchを開始すると、ネットワーク上のUPnP対応PCがレスポンスをデジタルカメラ100に送信する。図10(c)はResponseとして送信するSSDPデータの一例である。STヘッダは、検索対象とするデバイスタイプを示す。LOCATIONヘッダは、PC200のIPアドレスを示す。SERVERは、PC200のOSを示す。制御部は、PC200からマルチキャストされたM−SearchのST:タグを参照する。これは、検索デバイスの種類を示すものであり、PC200が対象のデバイスの種類であるならば、PC200は図10(c)のResponseをデジタルカメラ100へ送信する。制御部101は、通信部152を通じてSSDPレスポンスを検知した場合はS810へ進む。そうでない場合はS812へ進む。
S810において、制御部101はPC200のディスクリプション取得のためのHTTP GETを実行する。ここでの処理はS802と同様であるため説明は割愛する。
S811において、制御部101はディスクリプションを取得する。ここでの処理はS803と同様であるため説明は割愛する。
S812において、制御部101はMulticastDNSのQueryレスポンスがあるか否かを検出する。S808にてQueryを開始すると、設定されたServiceTypeに対応するPC200がレスポンスをデジタルカメラ100に送信する。制御部101は、Queryレスポンスを検知した場合はS813へ進む。そうでない場合は機器が検出されなかったと判定し、PC未発見として処理する。
S813において、制御部101はTXTレコードの送信を指示する。ここでの処理はS805と同様であるため説明は割愛する。
S814において、制御部101はTXTレコードを取得する。ここでの処理はS806と同様であるため説明は割愛する。
S815において、制御部101は接続可能PCであるか否かを検知する。UPnP対応PCの場合、図10(a)および(c)のSERVERヘッダを参照して、接続対象となるOSであるかを判定する。接続対象であると判定した場合は、図11(a)のディスクリプションのfriendlyNameタグをPC名として、UDNタグに記載されているGUIDと共にメモリ104に保存する。Bonjour対応PCである場合、不図示のアドレスレコードを取得してPCのホスト名を取得し、ホスト名をPC名として、図12(a)のTXTレコードのGUID Keyと共にメモリ104に保存する。そして、PC発見として処理する。そうでない場合は、PC未発見として処理する。
以上が、検索処理の詳細である。
S703において、制御部101はPC200が発見されたか否かを検知する。図8のデバイス検索処理においてPC200が発見されたと検知した場合はS704に進む。そうでない場合はS706に進む。
S704において、制御部101は発見したPC200のPC名をGUIに表示する。図8のS815にてメモリ104に保存したPC名を表示部130にGUIとして表示する。制御部101は、PCが発見される度にGUIにPC名の表示を追加する。図13(g−1)、(g−2)のGUIはその一例である。図13(g−1)のGUIでは、ディスカバリプロトコルに関係なく、PC名をGUIに表示する。また、別の表示方法として、図13(g−2)のGUIのようにディスカバリプロトコル毎にPC200をカテゴライズして表示してもよい。また、別の方法として、不図示であるが、S706で機器検索時間が経過した後に検索結果を一度に表示してもよい。
S705において、制御部101はPC200が選択されたか否かを検知する。S704において表示した図13(g−1)のGUIのPC名は、操作部102で選択することができる。ユーザが表示されたPC名のいずれかを選択した場合はS712へ進む。そうでない場合は、S706へ進む。
S706において、制御部101はデバイス検索時間がN分経過したか否かを検知する。デバイス検索時間は、あらかじめプログラムで規定されているか、もしくは不図示のメニューモードにてユーザが設定してメモリ104の不揮発性メモリに記録している。制御部101は、規定、設定された時間が経過したことを検知した場合はS707に進む。そうでない場合は、S709へ進む。
S707において、制御部101はPC名が表示済みか否かを検知する。PCが1台以上発見されている場合はS704にて接続可能なPC名がGUIに表示されている。制御部はGUIが表示されていることを検知した場合はS708に進む。そうでない場合、S710に進む。
S708において、制御部101はPC200が選択されたか否かを検知する。この処理はS705と同様であるため説明は割愛する。PC200が選択されたと検知した場合はS712に進む。そうでない場合はS711に進む。
S709において、制御部101は機器検索が中断されたか否かを検知する。図13(f)や(g−1)のGUIには、中断ボタンアイコン1301が配置されており、ユーザが中断ボタンアイコン1301を押下すると、制御部101は中断されたことを検知してデバイス検索を中断して、S707へ進む。そうでない場合、S702に戻り、デバイス検索を続ける。
S710において、制御部101はPC200が発見されなかったことを示すGUIを表示部130に表示する。図13(h)のGUIはその一例である。
S711において、制御部101はユーザが再検索を選択しないか否かを検知する。図13(h)のGUIには再検索を行うためのアイコンボタン1302が配置されている。ユーザが操作部102を操作して再検索のアイコンボタンを押下せず、戻るボタン1303を押下した場合はディスカバリ処理を終了し、S723に進む。そうでない場合は、デバイス検索時間のカウンターをリセットしてS702に戻りデバイス検索を再度実行する。
S712において、制御部101は選択したPC200のペアリング情報をメモリ104のRAMに一時保存する。UPnPの場合、選択したPC200から取得したディスクリプション(図11(a))から、以下の情報を保存する。
・friendlyNameヘッダに記載のPC名、
・発見したディスカバリプロトコルの種類、
・Advertisement(図10(a))またはResponse(図10(c))のLOCATIONヘッダに記載のIPアドレス、および
・UDNタグに記載のGUID(Globally Unique Identifier)
Bonjourの場合、不図示のアドレスレコードから取得したPCのホスト名とIPアドレス、発見したディスカバリプロトコルの種類、TXTレコード(図12(a))のGUID KeyのGUIDを保存する。
S713において、制御部101は広告を開始する。広告処理の詳細については、図9に示すフローチャートを参照して説明する。広告処理を開始すると、制御部101は図13(i)のGUIを表示部130に表示する。
S901において、制御部101はS705もしくはS708で選択したPC200を発見したディスカバリプロトコルがUPnPであるか否かを検知する。S712においてメモリ104のRAMに一時保存したペアリング情報を参照し、UPnPであると検知した場合はS902へ進む。そうでない場合はBonjourであると検知してS903へ進む。
S902において、制御部101はSSDP:Aliveをマルチキャストする。
S903において、制御部101はMulticast DNS NotifyをServiceTypeを添えてマルチキャストする。
S904において、制御部101はPC200からディスクリプションの送信指示があるか否かを検知する。PC200から送信指示があると検知した場合はS905へ進む。そうでない場合は要求があるまで待機する。図11(b)はデジタルカメラ100が保有するディスクリプションの一例である。図11(b)のディスクリプションはいくつかのタグによって構成されており、例えば、URLBaseタグはデジタルカメラ100のIPアドレスを示す。Devicetypeタグはデバイスタイプの種類を示す。friendryNameタグはデジタルカメラ100の名前を示す。UDNタグはデジタルカメラ100のGUIDを示す。また、ServiceTypeタグはデジタルカメラ100が提供可能なサービスを示す。HTTP GETは、HTTPプロトコルに従って通信先からデータを取得するためのメソッドである。なお、図13(i)のGUIにある中断ボタンアイコン1304がユーザによって押下された場合は、制御部101は広告を中断する。
S905において、制御部101はディスクリプションを要求先のPC200へ送信する。
S906において、制御部101はTXTレコードの送信指示があるか否かを検知する。PC200から送信指示があると検知した場合はS907へ進む。そうでない場合は要求があるまで待機する。図12(b)はデジタルカメラ100が保有するTXTレコードの一例である。TXTレコードは、ServiceTypeと紐付いており、Keyとその値から構成される。本実施形態におけるデジタルカメラ100からマルチキャストするServiceTypeは“_ptp”であり、それに紐付くTXTレコードのVersion KeyはTXTレコードのバージョンを示す。Model Keyは、デバイスのモデルの種類を示す。Product Keyは製品名を示す。Service Available Keyは、サービスが有効になったか否かを示す。有効になった場合はValueが1に更新される。GUID Keyはデジタルカメラ100のGUIDを示す。Target GUID KeyはS705で選択されたPC200のGUIDを示す。なお、図13(i)のGUIにある中断ボタンアイコン1304がユーザによって押下された場合は、制御部101は広告を中断する。
S907において、制御部101はTXTレコードを要求先のPC200へ送信する。
以上が、S713におけるデジタルカメラ100の広告処理の詳細である。
S714において、制御部101はPC200から送信されたInitCommandRequestパケットの受信を検知したか否かを検知する。InitCommandRequestパケットはPTP−IPで規定されているパケットタイプの1つであり、PCとデジタルカメラそれぞれのデバイス情報を交換したり、コマンド、データ送受信用のTCPのポート番号を確定したりする。通信部152を通じてInitCommandRequestの受信を検知した場合はS715に進む。そうでない場合はS716へ進む。
S715において、制御部101は識別子が一致するか否かを検知する。この処理では、S705もしくはS708で選択したPC200とInitCommandRequestパケットを送信したPC200が一致しているか否かを検知する。S714で受信したInitCommandRequestパケットに、PC200のGUIDが保存されている。このGUIDとペアリング情報としてS712で保存GUIDを比較し、一致していたら同一PCであると判断し、S717へ進む。そうでない場合はS718へ進む。また、GUIDの比較以外にも、選択したPCのIPアドレスとInitCommandRequestを送信したPCのIPアドレスを比較し、一致していたら同一PCであると判断してもよい。ここでは、ディスカバリ時に選択したPC200とInitCommandRequestパケットを送信したPC200が一致することを確認できる識別子であれば何でもよい。
S716において、制御部101は広告処理の有効期間であるM分経過したか否かを検知する。InitCommandRequestパケットの受信を受け付ける期間があらかじめプログラムで規定されているか、もしくはユーザの指示で設定されており、その時間を過ぎたか否かを検知する。過ぎていない場合はS714を繰り返す。そうでない場合はS723へ進む。
S717において、制御部101はInitAckパケットをPCへ送信する。S715で一致したと判定した場合は、InitCommandRequestパケットの受付を許可したことをPCへ伝えるInit Ackパケット送信する。
S718において、制御部101はInit FailパケットをPCへ送信する。S715で不一致したと判定した場合は、InitCommandRequestパケットの受付を拒否したことをPCへ伝えるInit Failパケット送信する。
S719において、制御部101はInitEventRequestパケットを受信したか否かを検知する。InitEventRequestパケットはPTP−IPで規定されているパケットタイプの1つであり、イベント送受信用のTCPのポート番号を確定する。通信部152を通じてInitEventRequestの受信を検知した場合はS720に進む。そうでない場合はS721へ進む。
S720において、制御部101はPCに対してInitAckパケットを送信する。
S721において、制御部101は広告処理の有効期間であるM分経過したか否かを検知する。S716と同様の時間が設けられており、M分経過した場合はS723へ進む。そうでない場合はS719を繰り返す。
S722において、制御部101はペアリング情報を記録する。S405およびS712でメモリ104に保存した情報を、不揮発性メモリに保存する。図14は保存するペアリング情報を示す概念図である。PC Nameは、接続したPC200の名前を示す。PC GUIDは、接続したPC200のGUIDを示す。Discovery Protocolはデバイス探索に用いたディスカバリプロトコルを示す。IPアドレスは、接続したPC200のIPアドレスを示す。SSIDは、接続したPC200に接続する際に接続したネットワークのSSIDを示す。Security Keyは、接続したPC200に接続する際に接続したネットワークの暗号キーを示す。
S723において、制御部101は接続失敗画面を表示部130に表示する。図13(j)のGUIはその一例である。
以上が、初回接続時におけるデジタルカメラのディスカバリ処理の詳細である。
[デジタルカメラのディスカバリ処理(2回目以降の接続)について]
次に、図4のS407のディスカバリの詳細について説明する。図15は、デジタルカメラ100が接続したことのあるPCと接続するディスカバリの動作を示すフローチャートである。このフローチャートは、ディスカバリ処理の図7のS701にて2回目以上接続と判定されてからS713の広告処理の開始に戻るまでの処理を示す。
まず、S1501において、制御部101はペアリング情報を参照する。メモリ104の不揮発性メモリに記録された前回接続されたペアリング情報を参照する。
S1502において、制御部101は、前回接続されたPC200のディスカバリプロトコルがUPnPであるか否かを検知する。S1501でペアリング情報のディスカバリプロトコルを参照し、UPnPであった場合はS1503へ進む。そうでない場合はS1504へ進む。
S1503において、制御部101はUPnPのデバイス検索を行う。ここでは、図8のS807、S809、S810、S811、S815と同様の処理を逐次的に行うため説明は割愛する。
S1504において、制御部101はBonjourでの機器検索を行う。ここでは、図8のS808、S812、S813、S814、S815と同様の処理を逐次的に行うため説明は割愛する。
S1505において、制御部101はPC200が発見されたか否かを検知する。S1503、またはS1504にて取得したディスクリプション、またはTXTレコードから取得したGUIDとペアリング情報のGUIDとを比較して、一致した場合は接続したことがあるPC200が発見されたと判定する。そうでない場合は、S1506へ進む。
S1506において、制御部101はL分経過したか否かを検知する、あらかじめプログラムで規定されているか、もしくはユーザが設定した時間、S1505により接続したことがあるPC200が発見されるまで処理を繰り返す。L分経過したと検知した場合はS1507へ進む。
S1507において、制御部101はPC200が未発見であるGUIを表示部130に表示する。図13(h)のGUIがその一例である。
S1505によりPCが発見された場合は、図7のS713に進み、広告処理を開始する。その後の処理は同様である。
以上が、接続したことのあるPCと接続するためのディスカバリの動作の詳細である。
[PCのディスカバリ処理について]
次に、PC200における図6のS602のディスカバリの詳細について説明する。図16は、PC200のディスカバリの動作を示すフローチャートである。
まず、S1601において、CPU203は広告処理を開始する。広告処理は、PC200のOSが基本機能として提供していたり、二次記憶装置205にインストールされるアプリケーションの機能として提供したりする。PC200は、対応するディスカバリプロトコルに則って広告処理を開始する。UPnP対応PCの場合はSSDP:Aliveをマルチキャストする。Bonjour対応PCの場合はMulticast DNS Notifyをマルチキャストする。
S1602において、CPU203は機器検索のマルチキャストを受信したか否かを検知する。デジタルカメラ100は、M−Search、またはMulticastDNS のQueryを実行してネットワーク上の機器にマルチキャストする。CPU203は通信装置206を通じてマルチキャストを受信したことを検知すると、S1601に進む。そうでない場合は、マルチキャストを受信するまで処理を続ける。
S1603において、CPU203はレスポンスを送信する。M−Searchの場合、図10(c)のResponseを送信する。Queryの場合、付加されたServiceTypeを参照して、PC200が保有している画像転送サービスであると判定した場合はデジタルカメラ100へレスポンスを送信してS1604へ進む。
S1604において、CPU203はデジタルカメラ100からディスクリプションの要求があるか否かを検知する。デジタルカメラ100はS1603においてレスポンスを受信すると続いてディスクリプションの取得の要求をPC200へ送信する。UPnPの場合、HTTP GETを実行してディスクリプションの取得を指示する。Bonjourの場合、TXTレコードの取得を指示する。CPU203は通信装置206を通じて上記のディスクリプションの送信指示を受信したと検知した場合はS1605へ進む。そうでない場合は、ディスクリプションの送信指示を検知するまで待機する。
S1605において、CPU203はディスクリプションをデジタルカメラ100へ送信する。UPnPの場合は図11(a)に示すようなDescriptionを送信する。Bonjourの場合は図12(a)に示すTXTレコードを送信する。
S1606において、CPU203はデジタルカメラ100の広告マルチキャストを受信したか否かを検知する。図9のS902またはS903にある広告処理を検知すると、S1607へ進む。そうでない場合は広告マルチキャストを受信するまで処理を続ける。
S1607において、CPU203はデジタルカメラに対してディスクリプションの送信を要求する。
S1608において、CPU203はディスクリプションを受信する。UPnPの場合は図11(b)に示すようなディスクリプションをデジタルカメラ100から受信する。Bonjourの場合は図12(b)に示すようなTXTレコードをデジタルカメラ100から受信する。
S1609において、CPU203は画像転送サービスに対応しているか否かを検知する。ディスクリプションには画像転送サービスに対応しているか否かの情報が記載されている。
そのタグを参照して、画像転送サービスに対応しているデジタルカメラであると検知した場合は、S1610に進む。そうでない場合はS1606に戻り、他のPCからの広告マルチキャストを受信するのを待つ。なお、前述の通り、本実施形態における画像転送サービスに用いられるプロトコルはPTP−IPであり、PTP−IPでの接続方法を基に説明する。
S1610において、CPU203はPTP−IPプロトコルのInitCommandRequestパケットをデジタルカメラ100へ送信する。
S1611において、CPU203はデジタルカメラ100が送信した、InitCommandRequestパケットを受け入れたことを示すInitAckパケットを受信したか否かを検知する。通信装置206を通じてInitAckパケットを受信したことを検知した場合はS1612に進む。そうでない場合はS1614に進む。
S1612において、CPU203はPTP−IPプロトコルのInitEventRequestパケットをデジタルカメラ100へ送信する。
S1613において、CPU203はデジタルカメラ100がInitEventRequestパケットを正常に処理したことを通知するInitAckパケットを受信する。
InitAckパケットを受信すると、デジタルカメラ100との接続に成功したと判断し、図6のS603へ進み、画像転送サービスを提供するアプリケーションを起動する。
S1614において、CPU203はデジタルカメラ100が送信した、InitCommandRequestパケットの受け入れを拒否したことを示すInitFailパケットを受信したか否かを検知する。InitFailパケットを受信したと検知した場合はS1615へ進む。そうでない場合は、S1611に戻り、InitCommandRequestパケット対するデジタルカメラ100のレスポンスを待つ。
S1615において、CPU203はS1614にてInitFailパケットを受信するとデジタルカメラ100との接続に失敗したと判断し、接続に失敗したことを示すGUIをPC200の表示部201に表示する。
S1616において、CPU203はデジタルカメラとの接続を終了するか否かを判定する。不図示のGUIにてユーザがPCを操作して画像転送サービスの開始を中断した場合は、接続失敗として処理し、画像転送サービスを終了する。他のデジタルカメラとの接続を待つ場合はS1602へ戻り、処理を続ける。
以上が、PCにおける図6のS602のディスカバリの処理の詳細である。
<他の実施形態>
なお、本実施形態では再生モードから無線接続を行うことを例にしたが、必ずしもこれらのモードに限定されない。例えば、撮影モードやメニューモードに無線接続ボタンを用意し、それをユーザが押下することで接続処理を進めてもよい。
また、本実施形態では無線通信機能を内蔵したデジタルカメラ100を例にあげて説明したが、無線通信が可能な記録メディアがデジタルカメラ100に装着され記録媒体141として無線通信を制御する構成としても構わない。この場合も本実施形態と同様の制御を無線通信が可能な記録メディアの不図示の無線回路部に対して行う。
さらに、デジタルカメラ100をPCなどから遠隔操作するシステムにおいても、本発明は適用可能である。この場合は、PCの制御部がデジタルカメラ100の制御部101に対して各種の問合せ及び制御の要求を行うことにより、遠隔操作で実現することが可能となる。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。