実施例1に係る通信システムは、図1及び図2に示すように、通信装置100、外部装置300、接続ケーブル200を有する。通信装置100と外部装置300は、接続ケーブル200を介して接続されている。
通信装置100は、接続ケーブル200を介して映像(video)データ、音声(audio)データ及び補助データを外部装置300に送信することができるデータ出力装置である。外部装置300は、通信装置100から受信した映像データを表示器に表示し、通信装置100から受信した音声データをスピーカから出力する表示装置である。通信装置100及び外部装置300はいずれも、接続ケーブル200を介して様々な制御コマンドを双方向に送信することができる。
実施例1において、通信装置100、外部装置300及び接続ケーブル200は、HDMI(High−Definition Multimedia Interface)規格に準拠するものとする。したがって、通信装置100は、HDMI規格におけるHDMIソース(Source)として機能するソース装置であり、外部装置300は、HDMI規格におけるHDMIシンク(Sink)として機能するシンク装置である。
実施例1において、通信装置100及び外部装置300は、HDMI規格が規定しているCEC(Consumer Electronics Control)プロトコルに準拠するものとする。通信装置100と外部装置300との間で双方向に送信される制御コマンドは、CECプロトコルに準拠する。以下、CECプロトコルに準拠した制御コマンドを「CECコマンド」と呼ぶ。
実施例1では、通信装置100の一例としてデジタルスチルカメラを用いる。なお、通信装置100は、デジタルスチルカメラに限るものではなく、HDMIソースとしての機能を持つ装置であれば、デジタル一眼レフカメラ、デジタルビデオカメラ、レコーダ、DVDプレイヤなどの映像出力装置を通信装置100として用いてもよい。
実施例1では、外部装置300の一例としてテレビジョン受像機(以下、「テレビ」と呼ぶ)を用いる。なお、外部装置300は、テレビに限るものではなく、HDMIシンクとしての機能を持つ装置であれば、プロジェクタやパーソナルコンピュータなどの表示装置を外部装置300として用いてもよい。
以下、通信装置100を「カメラ100」と呼び、接続ケーブル200を「HDMIケーブル200」と呼び、外部装置300を「テレビ300」と呼ぶ。
<HDMIケーブル200>
次に、図2を参照して、HDMIケーブル200を説明する。
HDMIケーブル200は、+5Vパワーライン、HPD(Hot Plug Detect)ライン201及びDDC(Display Data Channel)ライン202を有する。HDMIケーブル200はさらに、TMDS(Transition Minimized Differential Singnaling)ライン203及びCECライン204を有する。
+5Vパワーラインは、カメラ100からテレビ300に+5Vを供給するための電源供給ラインである。HPDライン201は、高電圧レベル(以下、Hレベル)又は低電圧レベル(以下、Lレベル)のHPD信号をテレビ300からカメラ100に伝送するための伝送ラインである。DDCライン202は、テレビ300のデバイス情報をテレビ300からカメラ100に伝送するための伝送ラインである。テレビ300のデバイス情報とは、テレビ300のEDID(Extended display identification data)又はE−EDID(Enhanced EDID)である。EDID及びE−EDIDはいずれも、テレビ300のデバイス情報として、テレビ300に関するテレビ300の識別情報、テレビ300の表示能力などに関する情報、テレビ300の接続端子を示す情報である物理アドレス等を含む。例えば、EDID及びE−EDIDには、テレビ300がサポートしている解像度、走査周波数、アスペクト比、色空間などに関する情報が含まれている。E−EDIDは、EDIDを拡張したものであり、EDIDよりも多くの能力情報を含む。例えば、E−EDIDには、テレビ300がサポートしている映像データ及び音声データのフォーマットなどに関する情報が含まれている。以下、EDID及びE−EDIDをいずれも「EDID」と呼ぶ。
TMDSライン203は、カメラ100からテレビ300に映像データ、音声データ及び補助データを伝送するための伝送ラインである。
CECライン204は、カメラ100とテレビ300との間で様々なCECコマンドを双方向に伝送するための伝送ラインである。テレビ300は、カメラ100を制御するためのCECコマンドをカメラ100にCECライン204を介して送信することにより、カメラ100を制御することができる。
なお、接続ケーブル200は、HDMIケーブルに限るものではなく、HDMI規格と互換性のある通信インターフェースであってもよい。また、カメラ100とテレビ300はHDMI規格に準拠したネットワークを無線通信によって行うものであってもよい。
<カメラ100>
次に、図2を参照して、カメラ100の構成の一例を説明する。
カメラ100は、図2に示すように、CPU101、メモリ102、通信部103、撮像部104、記録部105、表示部106、操作部107、電源供給部108及びROM109を有する。以下、カメラ100について説明する。
CPU(Central Processing Unit)101は、カメラ100全体の制御を行う。また、CPU101は、テレビ300から受信したCECコマンドにしたがってカメラ100を制御したり、操作部107からの入力信号によりカメラ100を制御する。また、CPU101は、テレビ300から取得したテレビ300のEDIDを解析し、解析した結果を取得したEDIDとともにメモリ102に記録する。
メモリ102は、カメラ100のバッファとして機能するメモリであり、記録部105によって読み出された映像データや音声データ等を一時的に記録することもできる。
また、メモリ102は、CPU101によって解析されたEDIDの解析結果及びテレビ300のEDIDに含まれる物理アドレスを記録する。メモリ102に記録される物理アドレスは、カメラ100がHDMIケーブル200を介して接続されているテレビ300の接続端子を示す情報である。メモリ102は、RAM(Random Access Memory)に限られるものではなく、ハードディスク装置等の外部記憶装置であってもよい。
通信部103は、HPD検出部103a、EDID取得部103b、映像送信部103c及びコマンド処理部103dを有する。
通信部103は、HDMIケーブル200を接続するための接続端子を有する。
HPD検出部103aは、テレビ300から送信されるHPD信号を、HPDライン201を介して検出する。カメラ100が不図示の+5Vパワーラインを介してテレビ300に+5V電源を供給している場合、テレビ300は、テレビ300のEDIDをカメラ100に送信できるか否かにより、HレベルのHPD信号またはLレベルのHPD信号をカメラ100に送信する。テレビ300にカメラ100から+5V電源が供給されている場合、テレビ300がテレビ300のEDIDをカメラ100に送信できるとき、テレビ300はHレベルのHPD信号をカメラ100にHPDライン201を介して送信する。そこで、HPD検出部103aは、HレベルのHPD信号を検出した場合、テレビ300からテレビ300のEDIDを取得できることをCPU101に通知する。
また、カメラ100からテレビ300に+5V電源が供給されていない場合、テレビ300は、LレベルのHPD信号をカメラ100にHPDライン201を介して送信する。なお、カメラ100からテレビ300に+5V電源が供給されている場合に、テレビ300がテレビ300のEDIDをカメラ100に送信できないときも同様に、テレビ300は、LレベルのHPD信号をカメラ100にHPDライン201を介して送信する。そこで、HPD検出部103aは、LレベルのHPD信号を検出した場合、テレビ300からテレビ300のEDIDを取得できないことをCPU101に通知する。
HPD検出部103aは、HPDライン201を介して検出したHPD信号がHレベルのHPD信号からLレベルのHPD信号に変化した場合、HPD信号がHレベルからLレベルに変化した旨をCPU101に通知する。また、HPD検出部103aは、HPD信号がLレベルのHPD信号からHレベルのHPD信号に変化した場合も同様にHPD信号がLレベルからHレベルに変化した旨をCPU101に通知する。
EDID取得部103bは、HPD検出部103aで検出されたHPD信号がHレベルである場合、DDCライン202を介して、テレビ300にテレビ300のEDIDを取得するための要求を送信し、テレビ300のEDIDを取得する。HPD検出部103aで検出されたHPD信号がLレベルである場合、EDID取得部103bはDDCライン202を介してテレビ300にテレビ300のEDIDを取得するための要求を送信せず、テレビ300のEDIDを取得しない。
映像送信部103c(第1の通信手段)は、撮像部104により生成された映像データや記録部105により記録媒体105aから読み出された映像データをTMDSライン203を介してテレビ300に送信する。また、映像送信部103cは、不図示のマイクロフォン部により生成された音声データや記録部105により記録媒体105aから読み出された音声データもTMDSライン203を介してテレビ300に送信する。また、映像送信部103cは、映像データをテレビ300に表示させるための補助データや音声データをテレビ300のスピーカから出力させるための補助データ等もテレビ300にTMDSライン203を介して送信する。
コマンド処理部103d(第2の通信手段)は、テレビ300からCECライン204を介してテレビ300から送信されたCECコマンドを受信し、受信したCECコマンドをCPU101に供給する。この場合、CPU101は、コマンド処理部103dから供給されたCECコマンドに応じて、カメラ100を制御する。
また、コマンド処理部103dは、テレビ300を制御するためのCECコマンドをCECライン204を介してテレビ300に送信する。なお、テレビ300を制御するためのCECコマンドは、CPU101で生成される。コマンド処理部103dは、テレビ300を制御するためのCECコマンドをCECライン204を介してテレビ300に送信した場合に、テレビ300から供給されるカメラ100への応答を受信する。なお、テレビ200からカメラ100への応答として、Ack応答と、Nack応答とがある。コマンド処理部103dがテレビ300にCECコマンドを送信した場合、テレビ300は、CECライン204が有効であるか否かをカメラ100に識別させるために、Ack応答及びNack応答のいずれか一つをCECライン204を介してカメラ100に供給する。コマンド処理部103dがAck応答を受信した場合、CPU101は、CECライン204が有効であると判定する。コマンド処理部103dがNack応答を受信した場合、CPU101は、CECライン204が無効であると判定する。
また、通信部103は、電源供給部108から通信部103に供給される電源から+5V電源を生成し、不図示の+5Vパワーラインを介して、テレビ300に+5V電源を供給する。
撮像部104は、カメラ100の動作モードが撮影モードである場合は、被写体を撮影し、当該被写体の光学像から映像データを生成する。また、撮像部104は、被写体を撮影するためのCCD等の撮像素子を有する。撮像部104で生成される映像データは、動画データ、静止画データのいずれでもよい。撮像部104で生成された映像データは、撮像部104から映像送信部103c及び記録部105に供給される。テレビ300からEDID取得部103bがテレビ300のEDIDを受信した場合、撮像部104は、撮像部104から映像送信部103cに供給される映像データを、テレビ300の表示能力に適した映像データに変換する。
撮像部104が動画データを生成する場合、不図示のマイクロフォン部は音声データを生成する。マイクロフォン部で生成された音声データは、マイクロフォン部から映像送信部103c、記録部105及び不図示のスピーカ部に供給される。テレビ300からテレビ300のEDIDを受信できた場合、マイクロフォン部は、マイクロフォン部から映像送信部103cに供給される音声データを、テレビ300の音声能力に適した音声データに変換する。マイクロフォン部から映像送信部103cに供給された音声データは、TMDSライン203を介してテレビ300に送信される。マイクロフォン部から記録部105に供給された音声データは、記録媒体105aに記録される。撮像部104は、カメラ100の動作モードが再生モードである場合は、被写体の撮影を停止し、当該被写体の光学像からの映像データの生成を停止する。
記録部105は、カメラ100の動作モードが撮影モードである場合は、撮像部104で生成された映像データと、マイクロフォン部で生成された音声データとを記録媒体105aに記録する。撮像部104及びマイクロフォン部で生成された映像データ及び音声データの記録媒体105aへの記録は、操作部107を介して入力されたユーザの指示に従って、CPU101が制御する。CPU101は、撮像部104及びマイクロフォン部で生成された映像データ及び音声データの記録媒体105aへの記録を、テレビ300から受信したCECコマンドに従って制御することもできる。
また、記録部105は、カメラ100の動作モードが再生モードである場合、記録媒体105aに記録されている映像データや音声データを読み出し、映像送信部103cや表示部106に供給する。なお、記録部105が記録媒体105aに記録する映像データや音声データは、撮像部104で生成された映像データであってもいい。また、記録部105は、カメラ100の動作モードが撮影モードである場合は、映像データや音声データの読み出しを停止する。
なお、記録媒体105aは、カメラ100に内蔵されたものであっても、カメラ100から取り外し可能なものであってもよい。また、記録媒体105aに記録されるデータは、静止画データや動画データ等であってもよく、映像データと音声データとが別々に記録されるものであってもよい。
表示部106は、液晶ディスプレイなどの表示器により構成される。カメラ100の動作モードが撮影モードである場合、表示部106は、撮像部104で生成された映像データを表示する。カメラ100の動作モードが再生モードである場合、表示部106は、記録部105が記録媒体105aから再生した映像データを表示する。
操作部107は、カメラ100を操作するためのユーザインターフェースを提供する。操作部107は、カメラ100を操作するための複数のボタンを有する。操作部107に含まれる各ボタンは、スイッチ、タッチパネル等により構成される。
電源供給部108は、AC電源、または不図示のバッテリーからカメラ100の各部に必要な電源を供給する。カメラ100が電源オン状態である場合は、電源供給部108からカメラ100全体に必要な電源が供給される。カメラ100が電源オフ状態である場合は、少なくとも電源供給部108からCPU101及び操作部107に電源が供給される。カメラ100が電源オフ状態である場合は、電源供給部108からROM109にも電源が供給されていてもよい。
また、通信部103から不図示の+5Vラインを介してテレビ300に送信される+5V電源も電源供給部108によって通信部103に供給される電源に応じて生成される。
ROM(Read Only Memory)109は、CPU101によって実行されるカメラ100を制御するためのコンピュータプログラムが記録されている。また、ROM109には、カメラ100で行われる処理や動作に対する閾値やカメラ100で行われる処理や動作に関するパラメータ等が記録されている。なお、ROM109は、ハードディスク装置等の記憶装置であってもよい。
<テレビ300>
次に、図2を参照して、テレビ300の構成の一例を説明する。
テレビ300は、図2に示すように、CPU301、チューナ部302、通信部303、表示部304、操作部305、メモリ306、電源供給部307、EDID制御部308、ROM309、リモコン信号受信部310及びリモートコントローラ311を有する。なお、リモートコントローラ311を以下、「リモコン311」と呼ぶ。
CPU301は、ROM309に格納されているコンピュータプログラムに従ってテレビ300全体の動作を制御する。また、CPU301は電源供給部307から各部に電源を供給するように制御したり、電源の供給を停止するように制御する。
チューナ部302は、ユーザによって選択されたテレビジョンチャンネルのテレビジョン放送を受信する。テレビジョンチャンネルの選択は、操作部305、もしくはリモコン311を用いて行う。
メモリ302は、テレビ300のバッファとして機能するメモリであり、通信部303によって取得された映像データ、音声データ及び補助データ等を一時的に記録することもできる。なお、メモリ302は、RAMに限られるものではなく、ハードディスク装置等の外部記憶装置であってもよい。
通信部303は、HPD出力部303a、EDID出力部303b、映像受信部303c及びコマンド処理部303dを有する。
通信部103は、HDMIケーブル200を接続するための接続端子を有する。
HPD出力部303aは、HPD信号を、HPDライン201を介してカメラ100に送信する。
通信部303は、カメラ100がHDMIケーブル200を介して接続されている接続端子をテレビ300が選択している場合、カメラ100から+5Vパワーラインを介してテレビ300に+5V電源が供給されているか否かを判定する。
さらに、HPD出力部303aは、この判定結果に応じてHレベルのHPD信号またはLレベルのHPD信号をカメラ100にHPDライン201を介して送信する。
通信部303が+5Vパワーラインを介してカメラ100から+5V電源が供給されたと判定した場合、EDID制御部308はメモリ306に格納されているテレビ300のEDIDをカメラ100にDDCライン202を介して送信できるか否かを判定する。ROM309には、各接続端子に対応するテレビ300のEDIDが別々に格納されている。カメラ100が接続されている接続端子に対応するEDIDに含まれる情報が変更されていない場合、EDID制御部308は、カメラ100が接続されている接続端子に対応するテレビ300のEDIDをカメラ100に送信できると判定する。この場合、CPU301は、カメラ100からのEDIDの要求によりカメラ100にテレビ300のEDIDを送信できることをカメラ100に通知するため、HレベルのHPD信号をカメラ100に送信するようにHPD出力部303aを制御する。なお、EDIDの要求とは、テレビ300のEDIDを取得するための要求である。
カメラ100が接続されている接続端子に対応するEDIDに含まれる情報が変更された場合、EDID制御部308は、カメラ100が接続されている接続端子に対応するテレビ300のEDIDをカメラ100に送信できないと判定する。この場合、CPU301は、カメラ100からのEDIDの要求によりカメラ100にテレビ300のEDIDを送信できないことをカメラ100に通知するため、LレベルのHPD信号をカメラ100に送信するようにHPD出力部303aを制御する。
また、通信部303が+5Vパワーラインを介してカメラ100から+5V電源を供給されていないと判定した場合、CPU101はLレベルのHPD信号をカメラ100にHPDライン201を介して送信するようにHPD出力部303aを制御する。
なお、通信部303は、テレビ300がカメラ100以外のソース装置が接続されている接続端子をテレビ300が選択している場合、カメラ100以外のソース装置から+5Vパワーラインを介してテレビ300に+5V電源が供給されているか否かを判定する。さらに、HPD出力部303aは、カメラ100の場合と同様にこの判定結果に応じて、HレベルのHPD信号またはLレベルのHPD信号をHPDラインを介して送信する。しかし、この場合、カメラ100が接続されている接続端子はテレビ300に選択されていないので、通信部303は、カメラ100が+5V電源をテレビ300に供給しているか否かの判定を行わない。このとき、CPU301は、カメラ100が接続されている接続端子を選択していないので、LレベルのHPD信号をカメラ100に送信するようにHPD出力部303aを制御する。このことによって、CPU301は、カメラ100からEDIDの要求を送信されたとしても、テレビ300のEDIDをカメラ100に送信しないことをカメラ100に通知する。
なお、テレビ300では、接続端子ごとに固有の物理アドレスが設定されており、接続端子ごとに設定されている固有の物理アドレスを示す情報は、EDIDに含まれている。
なお、物理アドレスは、HDMI規格に規定されている物理アドレスであり、通信システムにおける各装置の通信経路を示す情報である。
EDID出力部303bは、HPD出力部303aによってHPDライン201を介して送信されるHPD信号がHレベルである場合、DDCライン202を介して、カメラ100からテレビ300のEDIDを取得するための要求を受け付けたか否かを判定する。
HPD出力部303aにより送信されるHPD信号がHレベルであり、カメラ100からテレビ300のEDIDを取得するための要求を受け付けた場合、EDID出力部303bは、テレビ300のEDIDをDDCライン202を介してカメラ100に送信する。
なお、EDID出力部303bは、カメラ100からテレビ300のEDIDを取得するための要求を受け付けた場合、カメラ100からテレビ300のEDIDを取得するための要求を受けたことをCPU301に通知する。また、EDID出力部303bは、カメラ100以外のソース装置からテレビ300のEDIDを取得するための要求を受け付けた場合、カメラ100以外のソース装置からテレビ300のEDIDを取得するための要求を受けたことをCPU301に通知する。
HPD出力部303aにより送信されるHPD信号がLレベルである場合、EDID出力部303bは、カメラ100からテレビ300のEDIDを取得するための要求を受け付けたとしても、テレビ300のEDIDをカメラ100に送信しないようにする。
なお、EDID出力部303bは、EDID制御部308によって、ROM309から読み出され、EDID出力部303bに供給されるテレビ300のEDIDをカメラ100にDDCライン202を介して送信する。
映像受信部303cは、カメラ100から送信される映像データ、音声データ及び補助データを、TMDSライン203を介して受信する。
カメラ100がHDMIケーブル200を介して接続されている接続端子をテレビ300が選択している場合、カメラ100から映像受信部303cがTMDSライン203を介して受信した映像データは、メモリ302に記録され、表示部304に表示される。この場合、映像受信部303cがTMDSライン203を介して、カメラ100から受信した音声データは、メモリ302に記録され、不図示のスピーカ部から出力される。また、この場合、映像受信部303cがTMDSライン203を介して、カメラ100から受信した補助データは、CPU301に供給される。CPU301は、カメラ100から受信した補助データに従ってテレビ300を制御する。
カメラ100とは別のソース装置が接続されている別の接続端子をテレビ300が選択している場合、カメラ100からTMDSライン203を介して送信される映像データは表示部304に表示されない。このとき、カメラ100からTMDSライン203を介して送信される音声データは通信部303によって、不図示のスピーカ部から出力されない。この場合、別のソース装置から通信部303が受信した映像データが表示部304に表示され、別のソース装置から通信部303が受信した音声データがスピーカ部から出力される。
コマンド処理部303dは、カメラ100から送信されたCECコマンドをCECライン204を介して受信する。コマンド処理部303dは、カメラ100から受信したCECコマンドを、CPU301に供給し、CPU301は、カメラ100からコマンド処理部303dが受信したCECコマンドに従ってテレビ300を制御する。
また、コマンド処理部303dは、カメラ100から受信したCECコマンドに応じて、Ack応答または、Nack応答をCECラインを304を介してカメラ100に供給する。また、コマンド処理部303dは、カメラ100を制御するためのCECコマンドを、CECライン204を介してカメラ100に送信する。なお、カメラ100を制御するためのCECコマンドは、CPU301で生成され、CPU301からコマンド処理部303dに供給される。
なお、カメラ100とは別のソース装置が接続されている別の接続端子をテレビ300が選択している場合であっても、コマンド処理部303dは、カメラ100からCECライン204を介して送信されたCECコマンドを受信することができる。
なお、通信部303が有するHDMIケーブルを接続するための接続端子の数はテレビ300によって任意であり、2つ以上であってもよい。また、テレビ300は、接続端子の数だけHDMIケーブルを介してカメラ100以外のソース装置を接続することができる。
表示部304は、液晶ディスプレイ等の表示器により構成される。表示部304は、チューナ部302及び通信部303の少なくとも一つから供給された映像データを表示する。通信部303によってカメラ100から受信した映像データが供給された場合、表示部304はカメラ100から受信した映像データを表示する。
操作部305は、テレビ300を操作するためのユーザインターフェースを提供する。操作部305は、テレビ300を操作するための複数のボタンを有し、CPU301は、操作部305を介して入力されたユーザの指示に従ってテレビ300を制御する。操作部305に含まれる各ボタンは、スイッチ、タッチパネル等により構成される。操作部305はテレビ300を操作するための電源ボタン、チャンネル選択ボタン、外部入力ボタンなどを有する。
電源供給部307は、AC電源等からテレビ300の各部に必要な電源を供給する。テレビ300の電源状態が電源オン状態である場合、電源供給部307からテレビ300全体に電源が供給される。
テレビ300の電源状態が電源オン状態である場合、通信部303によって受信された映像データ及びチューナ部302によって受信された映像データのいずれかを表示部304は、表示することができる。また、テレビ300の電源状態がスタンバイ状態である場合、通信部303によって受信された音声データ及びチューナ部302によって受信された音声データのいずれかを不図示のスピーカ部は、出力することができる。
テレビ300の電源状態がスタンバイ状態である場合、電源供給部307から少なくともCPU301、操作部305及び通信部303には、電源供給部307から電源が供給される。しかし、CPU301、操作部305、通信部303及びリモコン信号受信部310以外の各部には、電源供給部307から電源は供給されない。なお、テレビ300の電源状態がスタンバイ状態である場合、ROM309にも電源供給部307から電源が供給されるようにしてもよい。テレビ300の電源状態がスタンバイ状態である場合、通信部303によって受信された映像データ及びチューナ部302によって受信された映像データのいずれも表示部304には、表示されない。また、テレビ300の電源状態がスタンバイ状態である場合、通信部303によって受信された音声データ及びチューナ部302によって受信された音声データのいずれも不図示のスピーカ部から出力されない。
EDID制御部308は、カメラ100または、他のソース装置からテレビ300のEDIDを取得するための要求をEDID出力部303bが受けたことが通知された場合、要求に対応するテレビ300のEDIDに含まれる情報が変更されたか否かを判定する。
EDID制御部308は、テレビ300のEDIDに含まれる情報が変更されていない場合、テレビ300のEDIDを取得するための要求に応じて、ROM309から、要求を送信した装置が接続されている接続端子に対応するテレビ300のEDIDを読み出す。EDID制御部308は、ROM309から読み出されたテレビ300のEDIDをEDID出力部303bに供給する。
EDID制御部308は、テレビ300のEDIDに含まれる情報が変更された場合、要求を送信した装置が接続されている接続端子を介して、LレベルのHPD信号を送信するようにする。この場合、EDID制御部308は、要求を送信した装置に対してテレビ300のEDIDを送信しないようにする。
ROM309は、CPU301によって実行されるテレビ300を制御するためのコンピュータプログラムが記録されている。また、ROM309には、テレビ300で行われる処理や動作に対する閾値やテレビ300で行われる処理や動作に関するパラメータ等が記録されている。なお、ROM309は、ハードディスク装置等の記憶装置であってもよい。
リモコン信号受信部310は、リモコン311から送信された制御信号を受信した場合、受信した制御信号をCPU301に供給する。これにより、リモコン311に入力されたユーザからの指示は、リモコン311及びリモコン信号受信部310を介してCPU301に入力されることになる。CPU301は、リモコン信号受信部310からの制御信号に従ってテレビ300及びカメラ100の少なくとも一つを制御することができる。リモコン信号受信部310からの制御信号に従ってカメラ100を制御する場合、CPU301は、リモコン信号受信部310から供給された制御信号に対応するCECコマンドを生成し、生成したCECコマンドをコマンド処理部303dに供給する。コマンド処理部303dに供給されたCECコマンドは、CECライン204を介してカメラ100に送信される。これにより、ユーザは、リモコン311を用いてカメラ100を制御することができる。なお、リモコン311は、テレビ300を介すことなくカメラ100を制御することはできないものとする。
リモコン311は、カメラ100及びテレビ300を操作するためのユーザインタフェースを提供する。リモコン311は、カメラ100を操作するための複数のボタンと、テレビ300を操作するための複数のボタンとを有する。リモコン311に含まれる各ボタンは、スイッチ、タッチパネル等により構成される。
リモコン311は、テレビ300を操作するための電源ボタン、チャンネル選択ボタン、外部入力ボタン、メニューボタン、+ボタン、−ボタン、SETボタンなどを有する。
チャンネル選択ボタンは、チューナ部302が受信するテレビジョンチャンネルを選択するためのボタンである。外部入力ボタンは、チューナ部302が受信したテレビジョン放送に含まれる映像データ、通信部303から受信した映像データのいずれかを選択し、選択した映像データを表示部304に表示させるためのボタンである。
リモコン311はさらに、カメラ100を操作するための再生ボタン、停止ボタン、一時停止ボタン、早送りボタン、巻き戻しボタン、スタート/ストップボタン、メニューボタンなどを有する。
<映像切替処理>
次に、図3を参照して、電源オン状態であるカメラ100で行われる映像切替処理について説明を行う。図3は、実施例1に係るカメラ100で行われる映像切替処理を説明するためのフローチャート図である。映像切替処理は、カメラ100からテレビ300に送信される映像データをテレビ300に表示させるようにテレビ300にカメラ100が接続されている接続端子を選択させるようにカメラ100がテレビ300を制御するための処理である。
映像切替処理は、カメラ100がHDMIケーブル200を介してテレビ300と通信を行うモードになった場合に行われる。
CPU101は、CECコマンドに応じてテレビ300を制御するために、カメラ100の論理アドレスを取得する必要がある。カメラ100の論理アドレスを取得するために、CPU101は、HDMI規格で規定されている複数の論理アドレスのうち、通信システムに存在するカメラ100以外の装置にまだ取得されていない論理アドレスを判定する必要がある。
S301において、CPU101は、CECライン204を介して、論理アドレスを含む<Polling Message>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<Polling Message>コマンドとは、CECコマンドの一つであって、通信システム内に、<Polling Message>コマンドに含まれる論理アドレスを既に持っている装置が存在するか否かを確認するためのコマンドである。なお、<Polling Message>コマンドに含まれる論理アドレスは、HDMI規格に規定されている複数の論理アドレスのうちの一つである。
コマンド処理部103dによって、<Polling Message>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S301からS302に進む。
S301で、テレビ300に送信された<Polling Message>コマンドをテレビ300が受け付けた場合、テレビ300は、<Polling Message>コマンドに対してAck応答及びNack応答のいずれか一つをカメラ100に送信する。カメラ100は、、テレビ300から供給される<Polling Message>コマンドに対する応答に応じて、カメラ100が論理アドレスを取得することができるか否かを判定することができる。
S302において、CPU101は、S301でコマンド処理部103dが送信した<Polling Message>コマンドに対する応答を受信したか否かに応じて、論理アドレスを取得することができるか否かを判定する。コマンド処理部103dがテレビ300から<Polling Message>コマンドに対する応答を受信した場合、CPU101は、<Polling Message>コマンドに含まれる論理アドレスを他の装置が既に取得していると判定する。この場合、CPU101は、<Polling Message>コマンドに含まれる論理アドレスをカメラ100の論理アドレスとして取得することができないと判定する。CPU101によって、コマンド処理部103dが<Polling Message>コマンドに対する応答を受信したと判定された場合(S302でYes)、本フローチャートは、S302からS301に戻る。
再び、CPU101がS301の処理を行う場合、既にテレビ300に送信した<Polling Message>コマンドに含まれる論理アドレスと異なる論理アドレスを含む<Polling Message>コマンドをテレビ300に送信するようにする。このような処理を繰り返すことによって、CPU101は、通信システム内のカメラ100以外の装置によってまだ取得されておらず、かつ、カメラ100が取得することができる論理アドレスを判定する。
コマンド処理部103dがテレビ300から<Polling Message>コマンドに対する応答を受信しなかった場合、CPU101は、<Polling Message>コマンドに含まれる論理アドレスを他の装置が取得していないと判定する。この場合、CPU101は、<Polling Message>コマンドに含まれる論理アドレスをカメラ100の論理アドレスとして取得することができると判定する。CPU101によって、コマンド処理部103dが<Polling Message>コマンドに対する応答を受信しなかったと判定された場合(S302でNo)、本フローチャートは、S302からS303に進む。
コマンド処理部103dがテレビ300から<Polling Message>コマンドに対する応答を所定の回数受信しなかった場合、CPU101は、<Polling Message>コマンドに含まれる論理アドレスを他の装置が取得していないと判定する。この場合も、CPU101は、<Polling Message>コマンドに含まれる論理アドレスをカメラ100の論理アドレスとして取得することができると判定する。
S303において、CPU101は、応答がなかった<Polling Message>コマンドに含まれる論理アドレスをカメラ100の論理アドレスとして、メモリ102に記録する。これによって、カメラ100は、カメラ100の論理アドレスを取得することができる。メモリ102にカメラ100の論理アドレスが記録された場合、本フローチャートは、S303からS304に進む。
S304において、CPU101は、不図示の+5V電源ラインを介して+5V電源をカメラ100からテレビ300に送信するように通信部103を制御する。
通信部103によって、+5V電源がテレビ300に送信された場合、本フローチャートは、S304からS305に進む。
S305において、CPU101は、HPD検出部103aがHレベルのHPD信号を検出したか否かを判定する。
CPU101によって、HPD検出部103aがHレベルのHPD信号を検出したと判定された場合(S305でYes)、本フローチャートは、S305からS306に進む。
CPU101によって、HPD検出部103aがHレベルのHPD信号を検出していないと判定された場合(S305でNo)、本フローチャートは、終了する。なお、CPU101によって、HPD検出部103aがLレベルのHPD信号を検出したと判定された場合も同様に、CPU101によって、HPD検出部103aがHレベルのHPD信号を検出していないと判定された場合と同様の処理を行う。この場合も、本フローチャートは、終了する。
S306において、CPU101は、テレビ300のEDIDを取得するための要求をDDCライン202を介してテレビ300に送信するようにEDID取得部103bを制御する。
テレビ300は、HレベルのHPD信号をカメラ100に送信している場合、カメラ100から送信されたEDIDの要求を受け付け、EDIDの要求に応じてテレビ300のEDIDをDDCライン202を介してカメラ100に送信する。そのため、CPU101は、EDID取得部103bがテレビ300のEDIDを取得する所定の時間が経過するまでの間、待機する。
CPU101によって、EDID取得部103bがテレビ300のEDIDを取得したと判定された場合、CPU101は、EDID取得部103bから供給されたテレビ300のEDIDを解析する。さらに、CPU101は、テレビ300のEDIDの解析結果及びEDID取得部103bから供給されたテレビ300のEDIDをメモリ102に記録する。テレビ300のEDIDの解析結果及びEDID取得部103bから供給されたテレビ300のEDIDがメモリ102に記録された場合、本フローチャートは、S306からS307に進む。
所定の時間が経過した場合において、CPU101によって、EDID取得部103bがテレビ300のEDIDを取得していないと判定された場合、本フローチャートは終了する。
S307において、CPU101は、S306においてメモリ102に記録されたテレビ300のEDIDの解析結果からテレビ300のEDIDに含まれている物理アドレスを取得する。さらに、CPU101は、テレビ300のEDIDの解析結果から取得した物理アドレスをカメラ100の物理アドレスとしてメモリ102に記録する。カメラ100の物理アドレスがメモリ102に記録された場合、本フローチャートはS307からS308に進む。
S308において、CPU101は、CECライン204を介して、<Report Physical Address>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<Report Physical Address>コマンドとは、CECコマンドの一つであって、通信システム内に存在する装置全てに、カメラ100の論理アドレス及びカメラ100の物理アドレスを通知するためのコマンドである。そのため、<Report Physical Address>コマンドには、カメラ100の論理アドレス及びカメラ100の物理アドレスが含まれる。
なお、<Report Physical Address>コマンドに含まれるカメラ100の論理アドレスは、メモリ102に記録されている論理アドレスである。また、<Report Physical Address>コマンドに含まれるカメラ100の物理アドレスは、メモリ102に記録されている物理アドレスである。
コマンド処理部103dによって、<Report Physical Address>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S308からS309に進む。
S309において、CPU101は、CECライン204を介して、カメラ100のVendor ID(以下「ベンダーID」と呼ぶ。)を含む<Device Vendor ID>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<Device Vendor ID>コマンドとは、CECコマンドの一つであって、通信システム内に存在する装置全てに、カメラ100のベンダーIDを通知するためのコマンドである。ベンダーIDとは、メーカーに応じた固有の識別情報である。通信システム内に、同じベンダーIDを有する装置が複数存在する場合、同じベンダーIDを有する装置同士は、メーカーによって規定されている特定の処理や動作を行うことができる。しかし、異なるベンダーIDを有する装置同士は、CEC規格によって規定されている処理や動作を行うことができるが、メーカーによって規定されている特定の処理や動作を行うことはできない。 なお、<Device Vendor ID>コマンドに含まれるカメラ100のベンダーIDは、あらかじめROM109に記録されているものとする。
コマンド処理部103dによって、<Device Vendor ID>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S309からS310に進む。
テレビ300がスタンバイ状態である場合、カメラ100から送信された映像データをテレビ300が受信したとしても、テレビ300は、テレビ300が電源オン状態になるまで、表示部304にカメラ100から受信した映像データを表示しない。そのため、カメラ100は、テレビ300が電源オン状態になるまでの間、テレビ300の表示部304に表示させるための映像データをテレビ300に送信したとしても、テレビ300には、カメラ100からの映像データは表示されなかった。
そこで、CPU101は、映像送信部103cによってテレビ300に映像データを送信する前に、テレビ300の電源がオン状態であるか否かを確認したうえで、映像データをテレビ300に送信するか否かを制御するようにする。
S310において、CPU101は、第1の電源確認処理を行う。第1の電源確認処理とは、カメラ100がテレビ300にカメラ100からの映像データを表示するように制御するためのCECコマンドをテレビ300の送信する前にテレビ300の電源が電源オン状態であるか否かを確認するための処理である。なお、第1の電源確認処理は、カメラ100がテレビ300にカメラ100からの映像データを送信する前に行われる処理である。
なお、第1の電源確認処理については、後述する。
CPU101によって、第1の電源確認処理が行われた場合、本フローチャートはS310からS311に進む。
S311において、CPU101は、CECライン204を介して、<Image View On>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<Image View On>コマンドとは、CECコマンドの一つであって、テレビ300を電源オン状態にして、テレビ300の表示部304を映像データが表示できる状態にするためコマンドである。
コマンド処理部103dによって、<Image View On>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S311からS312に進む。
S312において、CPU101は、CECライン204を介して、カメラ100の物理アドレスを含む<Active Source>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<Active Source>コマンドとは、CECコマンドの一つであって、カメラ100の物理アドレスが有効であることを通信システム内に存在する装置全てに通知するためのコマンドである。テレビ300は、カメラ100の物理アドレスを含む<Active Source>コマンドを受け付けた場合、カメラ100の物理アドレスに対応するテレビ300の接続端子を選択するように制御する。この場合、カメラ100からテレビ300に送信される映像データは、テレビ300の表示部304に供給されるようになる。また、カメラ100からテレビ300に送信される音声データは、テレビ300の不図示のスピーカ部に供給されるようになる。
コマンド処理部103dによって、<Active Source>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S312からS313に進む。
S313において、CPU101は、メモリ102に記録されている電源確認フラグfがオンに設定されているか否かを判定する。電源確認フラグfとは、テレビ300の電源状態を確認するための処理として、第2の電源確認処理をカメラ100が行うか否かをCPU101に判定させるためのフラグである。
CPU101によって、メモリ102の電源確認フラグfがオンに設定されていると判定された場合(S313でYes)、CPU101は、テレビ300の電源状態を確認するための処理として第2の電源確認処理を行う必要があると判定する。この場合(S313でYes)、本フローチャートは、S313からS316に進む。
CPU101によって、メモリ102の電源確認フラグfがオンに設定されていないと判定された場合(S313でNo)、CPU101は、テレビ300の電源状態を確認するための処理として第2の電源確認処理を行う必要はないと判定する。この場合(S313でNo)、本フローチャートは、S313からS314に進む。
S314において、CPU101は、TMDSライン203を介して映像データをカメラ100からテレビ300に送信するように映像送信部103cを制御する。
映像送信部103cによって、映像データがテレビ300に送信される処理が開始された場合、本フローチャートは、S314からS315に進む。
S315において、CPU101は、CECライン204を介して、カメラ100のメニューが有効であることを示す情報を含む<Menu Status>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
カメラ100のメニューが有効であることを示す情報を含む<Menu Status>コマンドとは、CECコマンドの一つであって、テレビ300のリモコン311を用いて、カメラ100に所定の処理を行わせるようにするためのコマンドである。
なお、所定の処理とは、ユーザにより操作されたリモコン311のボタンに対応するリモコンコードによって規定されている処理である。
テレビ300は、<Menu Status>コマンドを受け付けた場合、リモコン311が操作されたとき、操作されたリモコン311のボタンに対するリモコンコードの処理を行うようにカメラ100を制御するためのCECコマンドをカメラ100に送信する。
CPU301は、<Menu Status>コマンドを受け付けた場合に、リモコン311の再生ボタンが操作されたとき、映像データの再生をカメラ100に行わせるためのCECコマンドをカメラ100に送信するようにコマンド処理部303dを制御する。また、CPU301は、<Menu Status>コマンドを受け付けた場合、リモコン311の録画ボタンが操作されたとき、映像データの録画をカメラ100に行わせるためのCECコマンドをカメラ100に送信するようにコマンド処理部303dを制御する。
なお、CPU301は、<Menu Status>コマンドを受け付けていない場合、リモコン311が操作された場合であっても、操作されたリモコン311のボタンに対するリモコンコードの処理をカメラ100に行わせないように制御する。この場合、CPU301は、操作されたリモコン311のボタンに対するリモコンコードの処理をカメラ100に行わせるためのCECコマンドをカメラ100に送信しないようにコマンド処理部303dを制御する。
CPU301は、<Menu Status>コマンドにカメラ100のメニューが有効であることを示す情報が含まれていない場合も、同様である。この場合、CPU301は、リモコン311が操作された場合であっても、操作されたリモコン311のボタンに対するリモコンコードの処理をカメラ100に行わせるためのCECコマンドをカメラ100に送信しないようにコマンド処理部303dを制御する。
コマンド処理部103dによって、カメラ100のメニューが有効であることを示す情報を含む<Menu Status>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、終了する。
S316において、CPU101は、第2の電源確認処理を行う。第2の電源確認処理とは、カメラ100がテレビ300にカメラ100からの映像データを表示するように制御するためのCECコマンドがテレビ300に送信されてから、テレビ300の電源が電源オン状態であるか否かを確認するための処理である。なお、第2の電源確認処理は、カメラ100がテレビ300にカメラ100からの映像データを送信する前に行われる処理である。
なお、第2の電源確認処理については、後述する。
CPU101によって、第2の電源確認処理が行われた場合、本フローチャートはS316からS317に進む。
S317において、CPU101は、メモリ102記録されている、オンと設定されている電源確認フラグfをオフにするための処理を行う。メモリ102に電源確認フラグfがオフに設定された場合、本フローチャートは、終了する。
なお、実施例1において、CPU101は、S301からS303までの処理を行い、カメラ100の論理アドレスを取得してから、S304からS307までの処理を行い、カメラ100の物理アドレスを取得するようにした。しかし、CPU101は、S304からS307までの処理を行い、カメラ100の物理アドレスを取得してから、S301からS303までの処理を行い、カメラ100の論理アドレスを取得するようにしてもよい。また、CPU101は、S304からS307までの処理と、S301からS303までの処理とを並行して行い、論理アドレス及び物理アドレスを取得するようにしてもよいものとする。
なお、S311において、CPU101は、<Image View On>コマンドの代わりに<Text View On>コマンドをテレビ300に送信するようにコマンド処理部103dを制御してもよい。<Text View On>コマンドも、CECコマンドの一つであって、テレビ300を電源オン状態にして、テレビ300の表示部304を映像データが表示できる状態にするためコマンドである。
なお、さらに、CPU101は、S314において映像データを送信する前に、TMDSライン203に含まれるクロックラインから通信部103によって検出される情報を確認してから、S314の映像データを送信する処理を行うようにしてもよい。
TMDSライン203に含まれるクロックラインから通信部103によって検出される情報とは、「Rxセンス」と呼ばれる情報である。通信部103によって、HレベルのRxセンスまたはLレベルのRxセンスが検出される。
なお、映像切替処理は、カメラ100が再生モードである場合に、HDMIケーブル200が通信部103の接続端子に接続されたことが検出されたとき、カメラ100によって行われてもよい。また、映像切替処理は、カメラ100がHDMIケーブル200を介してテレビ300と通信を行うモードになった場合に、カメラ100が再生モードになったことが検出されたとき、カメラ100によって行われてもよい。
なお、カメラ100の論理アドレスは、上述したS301からS303の処理以外の方法によって取得されるものであってもよいものとする。また、カメラ100の物理アドレスは、上述したS304からS307の処理以外の方法によって取得されるものであってもよいものとする。
<第1の電源確認処理>
次に、図4を参照して、図3の映像切替処理のS310において行われる第1の電源確認処理について説明を行う。図4は、実施例1に係るカメラ100で行われる第1の電源確認処理を説明するためのフローチャート図である。なお、第1の電源確認処理を「第1の処理」と呼ぶ。
S401において、CPU101は、確認回数Aの値が0になるように確認回数Aをリセットするための処理を行う。なお、確認回数Aは、メモリ102に記録されている。確認回数Aとは、テレビ300の電源状態が所定の状態であることをカメラ100が検出した回数である。所定の状態とは、テレビ300の電源状態が、スタンバイ状態及び電源オン状態からスタンバイ状態に移行している状態のいずれか一つである状態である。確認回数Aがリセットされた場合、本フローチャートは、S401からS402に進む。
S402において、CPU101は、CECライン204を介して、<Give Dvice Power Status>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<Give Dvice Power Status>コマンドとは、CECコマンドの一つであって、テレビ300の電源状態の通知を要求するためのコマンドである。
さらに、CPU101は、コマンド処理部103dが<Give Device Power Status>コマンドを送信してから経過した時間を計測するようにタイマー101aを制御する。なお、タイマー101aによって計測される時間を示す情報は、メモリ102に記録される。
コマンド処理部103dによって、<Give Dvice Power Status>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S402からS403に進む。
テレビ300は、<Give Dvice Power Status>コマンドを受け付けた場合、<Give Dvice Power Status>コマンドに対して、<Report Power Status>コマンドをカメラ100に送信する。<Report Power Status>コマンドとは、CECコマンドの一つであって、テレビ300の電源状態を通知するためのコマンドである。<Report Power Status>コマンドには、テレビ300の電源状態を示す情報が含まれている。テレビ300の電源状態を示す情報には、電源オン状態を示す情報、スタンバイ状態から電源オン状態に移行している状態を示す情報、スタンバイ状態を示す情報及び電源オン状態からスタンバイ状態に移行している状態を示す情報が含まれている。
CPU101は、<Report Power Status>コマンドに含まれているテレビ300の電源状態を示す情報に応じて、テレビ300の電源状態を判定する。
そこで、S403において、CPU101は、<Report Power Status>コマンドをテレビ300からコマンド処理部103dが受信したか否かを判定する。
CPU101によって、コマンド処理部103dがテレビ300から<Report Power Status>コマンドを受信していないと判定された場合(S502でNo)、本フローチャートは、S403からS408に進む。
CPU101によって、コマンド処理部103dがテレビ300から<Report Power Status>コマンドを受信したと判定された場合、(S403でYes)、本フローチャートは、S403からS404に進む。
コマンド処理部103dがテレビ300から<Report Power Status>コマンドを受信した場合、コマンド処理部103dからCPU101に<Report Power Status>コマンドが供給される。
CPU101は、供給された<Report Power Status>コマンドを解析し、<Report Power Status>コマンドの解析結果は、メモリ102を記録する。なお、この場合、CPU101は、S402において計測を開始した時間の計測を停止するようにタイマー101aを制御し、S402においてタイマー101aによって計測される時間を示す情報を、メモリ102から消去するようにする。
S404において、CPU101は、S403においてメモリ102に記録された<Report Power Status>コマンドの解析結果に応じて、テレビ300の電源状態が所定の状態であるか否かを判定する。
CPU101は、<Report Power Status>コマンドの解析結果から<Report Power Status>コマンドに含まれる電源状態を示す情報を取得する。そこで、CPU101は、取得した電源状態を示す情報に応じてテレビ300の電源状態が所定の状態であるか否かを判定する。
<Report Power Status>コマンドに含まれる電源状態を示す情報が、電源オン状態を示す情報である場合、CPU101は、テレビ300が電源オン状態であると判定する。この場合、CPU101は、テレビ300の電源状態が所定の状態でないと判定する。
<Report Power Status>コマンドに含まれる電源状態を示す情報が、スタンバイ状態から電源オン状態に移行している状態を示す情報である場合、CPU101は、テレビ300は、スタンバイ状態から電源オン状態に移行していると判定する。この場合、CPU101は、テレビ300の電源状態が所定の状態でないと判定する。
<Report Power Status>コマンドに含まれる電源状態を示す情報が、スタンバイ状態を示す情報である場合、CPU101は、テレビ300がスタンバイ状態であると判定する。この場合、CPU101は、テレビ300の電源状態が所定の状態であると判定する。
<Report Power Status>コマンドに含まれる電源状態を示す情報が、電源オン状態からスタンバイ状態に移行している状態を示す情報である場合、CPU101は、テレビ300が電源オン状態からスタンバイ状態に移行していると判定する。この場合、CPU101は、テレビ300の電源状態が所定の状態であると判定する。
CPU101によって、テレビ300の電源状態が所定の状態であると判定された場合(S404でYes)、本フローチャートは、S404からS405に進む。
CPU101によって、テレビ300の電源状態が所定の状態でないと判定された場合(S404でNo)、本フローチャートは終了する。
CPU101によって、テレビ300の電源状態が所定の状態でないと判定された場合(S404でNo)、テレビ300の電源状態は、電源オン状態及びスタンバイ状態から電源オン状態に移行している状態のいずれか一つである。この場合、カメラ100は、テレビ300がカメラ100から送信された映像データを表示することができる状態であることを確認する。そのため、CPU101は、図3のS311からS314の処理を行うことによって、カメラ100からテレビ300に送信される映像データをテレビ300に表示させるようにする。
なお、テレビ300の電源状態が、スタンバイ状態から電源オン状態に移行している状態である場合、CPU101は、テレビ300が電源オン状態になるまでの時間が経過してから映像データをテレビ300に送信するよう映像送信部103cを制御してもよい。
なお、テレビ300が電源オン状態になるまでの時間とは、あらかじめカメラ100のメモリ102に記録されている時間であってもよく、テレビ300からカメラ100が取得した情報によって取得された時間であってもよいものとする。
S405において、CPU101は、メモリ102に記録されている確認回数Aの値に1を加算するようにする。この場合、本フローチャートは、S405からS406に進む。
S406において、CPU101は、確認回数Aが所定値B以上であるか否かを判定する。所定値Bは、2以上の値であれば、あらかじめメモリ102に記録されている閾値であっても、ユーザによって変更可能な値であってもよいものとする。
CPU101によって、確認回数Aが所定値B以上でないと判定された場合(S406でNo)、本フローチャートは、S406からS409に進む。
CPU101によって、確認回数Aが所定値B以上であると判定された場合(S406でYes)、本フローチャートは、S406からS407に進む。
S407において、CPU101は、メモリ102に記録されている電源確認フラグfをオンに設定する。これによって、CPU101は、図3のS316において、第2の電源確認処理を行うようにする。メモリ102に記録されている電源確認フラグfがオンに設定された場合、本フローチャートは終了する。なお、この場合、CPU101は、メモリ102に記録されている確認回数Aをリセットするための処理を行う。
S408において、CPU101は、S402において、コマンド処理部103dが<Give Device Power Status>コマンドを送信してからタイマー101aによって計測されている時間が所定の時間Tを経過したか否かを判定する。
CPU101によって、タイマー101aによって計測されている時間が所定の時間Tを経過していないと判定された場合(S408でNo)、本フローチャートは、S408からS403に戻る。
CPU101によって、タイマー101aによって計測されている時間が所定の時間Tを経過したと判定された場合(S408でYes)、本フローチャートは、S408からS407に進む。この場合も、確認回数Aが所定値Bよりも大きいと判定された場合(S406でYes)と同様に、S407において、CPU101は、メモリ102に記録されている電源確認フラグfをオンに設定する。
S409において、CPU101は、CECライン204を介して、<User Control Pressed>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<User Control Pressed>コマンドとは、CECコマンドの一つであって、テレビ300の電源状態が電源オン状態になるようにカメラ100がテレビ300を制御するためのコマンドである。<User Control Pressed>コマンドには、テレビ300の電源状態を電源オン状態にするようにテレビ300に指示するための情報が含まれている。
さらに、CPU101は、コマンド処理部103dが<User Control Pressed>コマンドを送信してから経過した時間を計測するようにタイマー101aを制御する。なお、タイマー101aによって計測される時間を示す情報は、メモリ102に記録される。
コマンド処理部103dによって、<User Control Pressed>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S409からS410に進む。
S409でカメラ100からテレビ300に送信された<User Control Pressed>コマンドをテレビ300が受け付けた場合、CPU301は、テレビ300の電源状態を電源オン状態にするように電源供給部307を制御する。
そこで、S410において、CPU101は、<User Control Pressed>コマンドに応じて、テレビ300の電源状態が電源オン状態になるまでの間、待機するようにコマンド処理部103dを制御する。
この場合、CPU101は、S409において、コマンド処理部103dが<User Control Pressed>コマンドを送信してから経過した時間が所定の時間Kに達するまでの間、待機するようにコマンド処理部103dを制御する。
この間、CPU101は、コマンド処理部103dがCECコマンドをテレビ300に送信したり、CECコマンドをテレビ300から受信できるようにする。しかし、CPU101は、コマンド処理部103dが<Give Device Power Status>コマンドをテレビ300に送信しないようにする。
CPU101によって、コマンド処理部103dが<User Control Pressed>コマンドを送信してからタイマー101aによって計測されている時間が所定の時間Kに達した場合、CPU101は所定の時間Kが経過したと判定する。この場合、本フローチャートは、S410からS402に進む。
なお、所定の時間Kは、あらかじめメモリ102に記録されている時間であっても、ユーザによって変更可能な時間であってもよいものとする。所定の時間Kは、<User Control Pressed>コマンドを受け付けたテレビ300が、<User Control Pressed>コマンドに応じて、テレビ300の電源状態を制御するためにかかる時間であればよいものとする。
なお、CPU101は、カメラ100からテレビ300に送信された映像データをテレビ300に表示させるために、テレビ300の電源をオンにするための操作をユーザに行わせるための情報を表示部106に表示させるようにしてもよい。
例えば、CPU101は、S406でYesと判定された場合に、テレビ300の電源をオンにするための操作をユーザに行わせるための情報を表示部106に表示させるようにしてもよい。また、例えば、CPU101は、S408でYesと判定された場合に、テレビ300の電源をオンにするための操作をユーザに行わせるための情報を表示部106に表示させるようにしてもよい。また、例えば、CPU101は、S410で、テレビ300の電源をオンにするための操作をユーザに行わせるための情報を表示部106に表示させるようにしてもよい。
<第2の電源確認処理>
次に、図5を参照して、図3の映像切替処理のS316において行われる第2の電源確認処理について説明を行う。図5は、実施例1に係るカメラ100で行われる第2の電源確認処理を説明するためのフローチャート図である。なお、第2の電源確認処理を「第2の処理」と呼ぶ。
S501において、CPU101は、S402と同様に、CECライン204を介して、<Give Dvice Power Status>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
さらに、CPU101は、コマンド処理部103dが<Give Device Power Status>コマンドを送信してから経過した時間を計測するようにタイマー101aを制御する。なお、タイマー101aによって計測される時間を示す情報は、メモリ102に記録される。
コマンド処理部103dによって、<Give Dvice Power Status>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S501からS502に進む。
S502において、CPU101は、S403と同様に、<Report Power Status>コマンドをテレビ300からコマンド処理部103dが受信したか否かを判定する。
CPU101によって、コマンド処理部103dがテレビ300から<Report Power Status>コマンドを受信していないと判定された場合(S502でNo)、本フローチャートは、S502からS506に進む。
CPU101によって、コマンド処理部103dがテレビ300から<Report Power Status>コマンドを受信したと判定された場合、CPU101は、<Report Power Status>コマンドを解析する。CPU101によって、<Report Power Status>コマンドの解析結果は、メモリ102に記録される。CPU101によって、コマンド処理部103dがテレビ300から<Report Power Status>コマンドを受信したと判定された場合、(S502でYes)、本フローチャートは、S502からS503に進む。なお、この場合、CPU101は、S501において計測を開始した時間の計測を停止するようにタイマー101aを制御し、S501においてタイマー101aによって計測される時間を示す情報を、メモリ102から消去するようにする。
S503において、CPU101は、S404と同様に、S502においてメモリ102に記録された<Report Power Status>コマンドの解析結果に応じて、テレビ300の電源状態が所定の状態であるか否かを判定する。
CPU101によって、テレビ300の電源状態が所定の状態であると判定された場合(S503でYes)、本フローチャートは、S503からS504に進む。
CPU101によって、テレビ300の電源状態が所定の状態でないと判定された場合(S503でNo)、本フローチャートは、S503からS507に進む。
CPU101によって、テレビ300の電源状態が所定の状態であると判定された場合(S503でYes)、テレビ300の電源状態は、スタンバイ状態及び電源オン状態からスタンバイ状態に移行している状態のいずれか一つである。この場合、CPU101は、テレビ300がカメラ100から送信された映像データを表示することができない状態であることと判定する。
そこで、S504において、CECライン204を介して、カメラ100の物理アドレスを含む<Inactive Source>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
<Inactive Source>コマンドとは、CECコマンドの一つであって、カメラ100からテレビ300に送信された<Active Source>コマンドが無効であることを通信システム内に存在する装置全てに通知するためのコマンドである。
CPU301は、<Inactive Source>コマンドを受け付けた場合、<Active Source>コマンドをカメラ100から受信する前の状態に戻すようにテレビ300全体を制御する。この場合、CPU301は、<Active Source>コマンドに応じて選択したテレビ300の接続端子を、<Active Source>コマンドを受信する前の状態に戻すように通信部303制御する。
コマンド処理部103dによって、<Inactive Source>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、S504からS505に進む。
S505において、CPU101は、リセット処理を行う。リセット処理とは、CECライン204を介してカメラ100がテレビ300から取得した情報を消去する処理と、コマンド処理部103dを初期化するための処理とを含む。
CPU101は、カメラ100の論理アドレス、テレビ300から受信したCECコマンド及びテレビ300から受信したCECコマンドに関する情報をメモリ102から消去する。これにより、CPU101は、CECライン204を介してカメラ100がテレビ300から取得した情報を消去する。なお、テレビ300から受信したCECコマンドに関する情報とは、テレビ300からコマンド処理部103dが受信したCECコマンドの解析結果やCECコマンドの解析結果から得られた情報等である。
さらに、CPU101は、コマンド処理部103dに供給されている電源を一旦停止するように電源供給部108を制御し、再びコマンド処理部103dに電源を供給するように電源供給部108を制御する。これにより、CPU101は、コマンド処理部103dとテレビ300とのCECライン204を介した通信を切断し、コマンド処理部103dを初期化する。
なお、リセット処理がCPU101によって行われたとしても、CPU101は、通信部103による+5V電源を+5V電源ラインを介してテレビ300に送信する処理及びHPD検出部103aによるHPD信号を検出する処理を停止しないようにする。なお、リセット処理がCPU101によって行われたとしても、電源供給部108からHPD検出部103a、EDID取得部103b及び映像送信部103cへの電源供給は停止されないようにする。
CPU101によって、リセット処理が行われた場合、本フローチャートは終了する。
なお、S505において、リセット処理が行われた場合、CPU101は、S301の処理を行い、再び図3の映像切替処理を行うようにしてもよい。この場合、HPD検出部103aによって検出されるHPD信号がHレベルであるとき、CPU101は、映像切替処理のS304からS307までの処理を省略して、映像切替処理のS301からS303及びS308からS317までの処理を行ってもよい。また、再びS301の処理を行う前にCPU101は、テレビ300の電源をオンにするための操作をユーザに行わせるための情報を表示部106に表示させるようにしてもよい。
S506において、CPU101は、S501において、コマンド処理部103dが<Give Device Power Status>コマンドを送信してからタイマー101aによって計測されている時間が所定の時間Tを経過したか否かを判定する。
CPU101によって、タイマー101aによって計測されている時間が所定の時間Tを経過していないと判定された場合(S506でNo)、本フローチャートは、S506からS502に戻る。
CPU101によって、タイマー101aによって計測されている時間が所定の時間Tを経過したと判定された場合(S506でYes)、本フローチャートは、S506からS504に進む。
この場合も、テレビ300の電源状態が所定の状態である場合(S503でYes)と同様に、S504において、CPU101は、カメラ100の物理アドレスを含む<Inactive Source>コマンドをテレビ300に送信するようにする。
S507において、CPU101は、S314と同様にTMDSライン203を介して映像データをカメラ100からテレビ300に送信するように映像送信部103cを制御する。
映像送信部103cによって、映像データがテレビ300に送信される処理が開始された場合、本フローチャートは、S507からS508に進む。
S508において、CPU101は、S315と同様に、CECライン204を介して、<Menu Status>コマンドをテレビ300に送信するようにコマンド処理部103dを制御する。
コマンド処理部103dによって、<Menu Status>コマンドがCECライン204を介してテレビ300に送信された場合、本フローチャートは、終了する。
なお、さらに、CPU101は、S507において映像データを送信する前に、Rxセンスを確認してから、S507の映像データを送信する処理を行うようにしてもよい。
なお、実施例1において、カメラ100は、映像データをテレビ300に送信するようにしたが、音声データだけをテレビ300に送信するようにしても良いものとする。
実施例1に係る通信装置100は、通信装置100から受信した映像データを表示させるように外部装置300を制御する前に、外部装置300の電源の状態の確認を行うようにした。
この場合、通信装置100は、外部装置300の電源の状態が通信装置100から送信される映像データを表示できる状態である場合、通信装置100から受信した映像データを表示させるように外部装置300を制御し、映像データを外部装置300に送信する。
また、通信装置100は、外部装置300の電源の状態が通信装置100から送信される映像データを表示できる状態でない場合、通信装置100から受信した映像データを表示させるように外部装置300を制御してから、外部装置300の電源の状態を確認する。この場合、通信装置100は、外部装置300の電源の状態が通信装置100から送信される映像データを表示できる状態であると判定してから、映像データを外部装置300に送信する。
また、通信装置100は、外部装置300の電源の状態が通信装置100から送信される映像データを表示できる状態でない場合、映像データを外部装置300に送信しないようにする。
このように、実施例1に係る通信装置100は、外部装置300の電源の状態が通信装置100から送信される映像データを表示できる状態であることを確認してから、外部装置300に表示させるための映像データを外部装置300に送信するようにした。
そのため、通信装置100は、外部装置300の電源の状態が通信装置100から送信される映像データを表示できる状態でない場合に、外部装置300に表示させるための映像データを外部装置300に送信しないようにすることができる。
これによって、ユーザが通信装置100から外部装置300に送信された映像データを見逃してしまうことを防ぎ、ユーザに所望の映像データを視聴させることができる。
なお、実施例1において、カメラ100とテレビ300とはHDMI規格に応じて通信を行うようにした。しかし、カメラ100とテレビ300とが、DiiVA(Digital Interface for Video and Audio)規格に応じて通信を行うものであってもよい。
(他の実施例)
本発明に係る通信装置100は、実施例1で説明した通信装置100に限定されるものではない。また、本発明に係る外部装置300は、実施例1で説明した外部装置300に限定されるものではない。例えば、本発明に係る通信装置100は、複数の装置から構成されるシステムにより実現することも可能であり、本発明に係る外部装置300は、複数の装置から構成されるシステムにより実現することも可能である。
また、実施例1で説明した様々な処理及び機能は、コンピュータプログラムにより実現することも可能である。この場合、本発明に係るコンピュータプログラムは、コンピュータ(CPU等を含む)で実行可能であり、実施例1で説明した様々な機能を実現することになる。
本発明に係るコンピュータプログラムは、コンピュータ上で稼動しているOS(Operating System)などを利用して、実施例1で説明した様々な処理及び機能を実現してもよいことは言うまでもない。
本発明に係るコンピュータプログラムは、コンピュータ読取可能な記録媒体から読み出され、コンピュータで実行されることになる。コンピュータ読取可能な記録媒体には、ハードディスク装置、光ディスク、CD−ROM、CD−R、メモリカード、ROM等を用いることができる。また、本発明に係るコンピュータプログラムは、通信インターフェースを介して外部装置からコンピュータに提供され、当該コンピュータで実行されるようにしてもよい。