以下に、本発明に係る実施例について、添付の図面に基づいて詳細に説明する。なお、本発明、以下に説明する実施例1に限定されるものではないものとする。
[実施例1]
実施例1に係る通信システムは、図1及び図2に示すように、通信装置100、外部装置300、接続ケーブル200及びリモコン(リモートコントローラ)400を有する。通信装置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コマンド」と呼ぶ。
リモコン400は、外部装置300を操作するデバイスである。リモコン400は、外部装置300と無線通信を行う。リモコン400がユーザによって操作された場合、リモコン400は、ユーザによって行われる操作に対応するリモコン信号を外部装置300に送信する。なお、リモコン400は、通信装置100とは、直接無線通信を行わないものとする。リモコン400を用いて通信装置100を操作する場合、リモコン400から外部装置300にリモコン信号が送信される。この場合、外部装置300は、リモコン400から入力されたリモコン信号に対応するCECコマンドを接続ケーブル200を介して通信装置100に送信する。その後、通信装置100は、外部装置300からリモコン信号に対応するCECコマンドを受信した場合、受信したCECコマンドに応じて、通信装置100を制御する。これによって、ユーザは、リモコン400を用いて通信装置100を操作することができる。
実施例1では、通信装置100の一例としてデジタルスチルカメラを用いる。なお、通信装置100は、デジタルスチルカメラに限るものではなく、HDMIソースとしての機能を持つ装置であれば、デジタル一眼レフカメラ、デジタルビデオカメラ、レコーダ、DVDプレイヤなどの映像出力装置を通信装置100として用いてもよい。
実施例1では、外部装置300の一例としてテレビジョン受像機(以下、「テレビ」と呼ぶ)を用いる。なお、外部装置300は、テレビに限るものではなく、HDMIシンクとしての機能を持つ装置であれば、プロジェクタやパーソナルコンピュータなどの表示装置を外部装置300として用いてもよい。また、外部装置300は、HDMI規格におけるHDMIリピータ(Ripeater)として機能する装置であってもよいものとする。なお、この場合、外部装置300は、Avアンプを外部装置300として用いてもよい。
以下、通信装置100を「カメラ100」と呼び、接続ケーブル200を「HDMIケーブル200」と呼び、外部装置300を「テレビ300」と呼ぶ。
<HDMIケーブル200>
次に、図2を参照して、HDMIケーブル200を説明する。
HDMIケーブル200は、電源伝送ライン201、HPD(Hot Plug Detect)ライン202及びDDC(Display Data Channel)ライン203を有する。HDMIケーブル200はさらに、TMDS(Transition Minimized Differential Singnaling)ライン204及びCECライン205を有する。
電源伝送ライン201は、カメラ100からテレビ300に所定の電源を供給するための伝送ラインである。
HPDライン202は、高電圧レベル(以下、Hレベル)又は低電圧レベル(以下、Lレベル)のHPD信号をテレビ300からカメラ100に伝送するための伝送ラインである。
DDCライン203は、テレビ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がサポートしている解像度、走査周波数、アスペクト比、色空間などに関する情報や、テレビ300の接続端子を示す情報である物理アドレスが含まれている。E−EDIDは、EDIDを拡張したものであり、EDIDよりも多くの能力情報を含む。例えば、E−EDIDには、テレビ300がサポートしている映像データ及び音声データのフォーマットや3D表示フォーマットに関する対応などに関する情報が含まれている。以下、EDID及びE−EDIDをいずれも「EDID」と呼ぶ。
TMDSライン204は、カメラ100からテレビ300に映像データ、音声データ及び補助データを伝送するための高速な伝送ラインである。
CECライン205は、カメラ100とテレビ300との間で様々なCECコマンドを双方向に伝送するための伝送ラインである。テレビ300は、カメラ100を制御するためのCECコマンドをカメラ100にCECライン205を介して送信することにより、カメラ100を制御することができる。
なお、接続ケーブル200は、HDMIケーブルに限るものではなく、DiiVA、MHL(Mobile High−Definition Link)やWireless HD(Wireless High Definition)等の規格に対応する通信インターフェースであってもよい。
また、接続ケーブル200は、HDMI規格と互換性のある通信インターフェースであってもよい。また、カメラ100とテレビ300は、HDMI規格に準拠したネットワークを無線通信によって行うものであってもよい。また、テレビ300は、カメラ100を制御するための制御コマンドを無線通信によって送信するようにしてもよい。
<カメラ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に記録する。
また、CPU101は、タイマー101a及びタイマー101bを有する。タイマー101aによって計測される時間を「時間T1」と呼び、タイマー101bによって計測される時間を「時間T2」と呼ぶものとする。なお、タイマー101aによって計測された時間T1を示す値は、メモリ102に記録される。また、タイマー101bによって計測される時間T2を示す値は、メモリ102に記録される。
メモリ102は、カメラ100のバッファとして機能するメモリであり、記録部105によって読み出された映像データや音声データ等を一時的に記録することもできる。
また、メモリ102は、CPU101によって解析されたEDIDの解析結果、コマンド処理部103eによって解析されたコマンドの解析結果及びテレビ300から取得したEDIDに含まれる物理アドレスを記録する。メモリ102に記録される物理アドレスは、カメラ100がHDMIケーブル200を介して接続されているテレビ300の接続端子を示す情報を含む。また、物理アドレスは、カメラ100の通信経路を示す情報を含む。メモリ102は、RAM(Random Access Memory)に限られるものではなく、ハードディスク装置等の外部記憶装置であってもよい。
通信部103は、電源出力部103a、HPD検出部103b、EDID取得部103c、パケット送信部103d及びコマンド処理部103eを有する。
通信部103は、HDMIケーブル200を接続するための接続端子を有する。
電源出力部103aは、電源供給部108から供給される電源から所定の電源を生成する。さらに、電源出力部103aは、生成した所定の電源を電源伝送ライン201を介してテレビ300に出力する。
HPD検出部103bは、テレビ300から送信されるHPD信号を、HPDライン202を介して検出する。電源出力部103aから電源伝送ライン201を介してテレビ300に所定の電源が供給されている場合、テレビ300は、テレビ300のEDIDをカメラ100に送信できるか否かを判定する。この場合、テレビ300は、この判定結果に応じて、HレベルのHPD信号またはLレベルのHPD信号をカメラ100に送信する。電源伝送ライン201を介してテレビ300に所定の電源が供給される場合、テレビ300がEDIDをカメラ100に送信できると判定したとき、テレビ300はHレベルのHPD信号をカメラ100にHPDライン202を介して送信する。そこで、HPD検出部103bは、HPDライン202を介してHレベルのHPD信号を検出した場合、テレビ300からテレビ300のEDIDを取得できることをCPU101に通知する。
また、電源出力部103aから電源伝送ライン201を介してテレビ300に所定の電源が供給されていない場合、テレビ300は、LレベルのHPD信号をカメラ100にHPDライン202を介して送信する。なお、電源伝送ライン201を介してテレビ300に所定の電源が供給される場合で、テレビ300がEDIDをカメラ100に送信できないと判定したとき、テレビ300は、LレベルのHPD信号をカメラ100にHPDライン202を介して送信する。そこで、HPD検出部103bは、HPDライン202を介してLレベルのHPD信号を検出した場合、テレビ300からテレビ300のEDIDを取得できないことをCPU101に通知する。
HPD検出部103bは、HPDライン202を介して検出したHPD信号がHレベルのHPD信号からLレベルのHPD信号に変化した場合、HPD信号がHレベルからLレベルに変化した旨をCPU101に通知する。また、HPD検出部103bは、HPD信号がLレベルのHPD信号からHレベルのHPD信号に変化した場合も同様にHPD信号がLレベルからHレベルに変化した旨をCPU101に通知する。
EDID取得部103cは、HPD検出部103bで検出されたHPD信号がHレベルである場合、DDCライン203を介して、テレビ300にテレビ300のEDIDを取得するための要求を送信し、テレビ300のEDIDを取得する。HPD検出部103bで検出されたHPD信号がLレベルである場合、EDID取得部103cはDDCライン203を介してテレビ300にテレビ300のEDIDを取得するための要求を送信せず、テレビ300のEDIDを取得しない。
パケット送信部103dは、撮像部104により生成された映像データや記録部105により記録媒体105aから読み出された映像データをTMDSライン204を介してテレビ300に送信する。また、パケット送信部103dは、不図示のマイクロフォン部により生成された音声データや記録部105により記録媒体105aから読み出された音声データもTMDSライン204を介してテレビ300に送信する。また、パケット送信部103dは、映像データをテレビ300に表示させるための補助データや音声データをテレビ300のスピーカから出力させるための補助データ等もテレビ300にTMDSライン204を介して送信する。
コマンド処理部103eは、テレビ300からCECライン205を介してテレビ300から送信されたCECコマンドを受信し、受信したCECコマンドを解析する。コマンド処理部103eは、コマンドの解析結果をCPU101に供給する。この場合、CPU101は、コマンド処理部103eから供給されたコマンドの解析結果に応じて、カメラ100を制御する。
また、コマンド処理部103eは、テレビ300を制御するためのCECコマンドをCECライン205を介してテレビ300に送信する。なお、テレビ300を制御するためのCECコマンドは、CPU101によって生成される。コマンド処理部103eは、テレビ300を制御するためのCECコマンドをCECライン205を介してテレビ300に送信した場合に、テレビ300から供給されるカメラ100への応答を受信する。なお、テレビ300からカメラ100への応答として、肯定の応答を示すAck応答と、否定の応答を示すNack応答とがある。
撮像部104は、カメラ100の動作モードが撮影モードである場合は、被写体を撮影し、当該被写体の光学像から映像データを生成する。また、撮像部104は、被写体を撮影するためのCCD等の撮像素子を有する。撮像部104で生成される映像データは、動画データ、静止画データのいずれでもよい。撮像部104で生成された映像データは、撮像部104からパケット送信部103d及び記録部105に供給される。テレビ300からEDID取得部103cがテレビ300のEDIDを受信した場合、撮像部104は、テレビ300のEDIDに応じて、撮像部104からパケット送信部103dに供給される映像データをテレビ300の表示能力に適した映像データに変換する。
撮像部104が動画データを生成する場合、不図示のマイクロフォン部は音声データを生成する。マイクロフォン部で生成された音声データは、マイクロフォン部からパケット送信部103d、記録部105及び不図示のスピーカ部に供給される。テレビ300からテレビ300のEDIDを受信できた場合、マイクロフォン部は、テレビ300のEDIDに応じて、マイクロフォン部からパケット送信部103dに供給される音声データを、テレビ300の音声能力に適した音声データに変換する。マイクロフォン部からパケット送信部103dに供給された音声データは、TMDSライン204を介してテレビ300に送信される。マイクロフォン部から記録部105に供給された音声データは、記録媒体105aに記録される。撮像部104は、カメラ100の動作モードが再生モードである場合は、被写体の撮影を停止し、当該被写体の光学像からの映像データの生成を停止する。
記録部105は、カメラ100の動作モードが撮影モードである場合は、撮像部104で生成された映像データと、マイクロフォン部で生成された音声データとを記録媒体105aに記録する。撮像部104及びマイクロフォン部で生成された映像データ及び音声データの記録媒体105aへの記録は、操作部107を介して入力されたユーザの指示に従って、CPU101が制御する。CPU101は、撮像部104及びマイクロフォン部で生成された映像データ及び音声データの記録媒体105aへの記録を、テレビ300から受信したCECコマンドに従って制御することもできる。
また、記録部105は、カメラ100の動作モードが再生モードである場合、記録媒体105aに記録されている映像データや音声データを読み出し、パケット送信部103dや表示部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及びコマンド処理部103eに電源が供給される。カメラ100が電源オフ状態である場合は、電源供給部108からROM109にも電源が供給されていてもよい。
ROM(Read Only Memory)109は、CPU101によって実行されるカメラ100を制御するためのプログラムが記録されている。また、ROM109には、カメラ100で行われる処理や動作に対する閾値やカメラ100で行われる処理や動作に関するパラメータ等が記録されている。なお、ROM109は、ハードディスク装置等の記憶装置であってもよい。
<テレビ300>
次に、図2を参照して、テレビ300の構成の一例を説明する。
テレビ300は、図2に示すように、CPU301、チューナ部302、通信部303、表示部304、操作部305、メモリ306、電源供給部307、ROM308、リモコン信号受信部309を有する。
CPU301は、ROM308に格納されているプログラムに従ってテレビ300を制御する。また、CPU301は電源供給部307から各部に電源を供給するように制御したり、電源の供給を停止するように制御する。
チューナ部302は、ユーザによって選択されたテレビジョンチャンネルのテレビジョン放送を受信する。テレビジョンチャンネルの選択は、操作部305またはリモコン400を用いて行う。
メモリ306は、テレビ300のバッファとして機能するメモリであり、通信部303によって取得された映像データ、音声データ及び補助データ等を一時的に記録することもできる。なお、メモリ306は、RAMに限られるものではなく、ハードディスク装置等の外部記憶装置であってもよい。
通信部303は、電源入力部303a、HPD出力部303b、EDID出力部303c、パケット受信部303d及びコマンド処理部303eを有する。
通信部303は、HDMIケーブル200を接続するための接続端子を有する。
電源検出部303aは、所定の電源を電源伝送ライン201を介してカメラ100から供給される。また、電源検出部303aは、電源伝送ライン201を介してカメラ100から所定の電源が供給されているか否かを検出する。
HPD出力部303bは、HPD信号、HPDライン202を介してカメラ100に送信する。電源検出部303aによって電源伝送ライン201を介してカメラ100から所定の電源が供給されていると検出された場合、HPD出力部303bは、HレベルのHPD信号またはLレベルのHPD信号をカメラ100にHPDライン202を介して送信する。
電源検出部303aによって電源伝送ライン201を介して所定の電源が供給されていると検出された場合、HPD出力部303bは、メモリ306に格納されているEDIDをカメラ100にDDCライン203を介して送信できるか否かを判定する。メモリ306には、HDMIケーブルを接続するための各接続端子に対応するテレビ300のEDIDが別々に格納されている。カメラ100が接続されている接続端子に対応するEDIDに含まれる情報が変更されていない場合、HPD出力部303bは、カメラ100が接続されている接続端子に対応するテレビ300のEDIDをカメラ100に送信できると判定する。この場合、カメラ100からのEDIDの要求によりカメラ100にテレビ300のEDIDを送信できることをカメラ100に通知するため、HPD出力部303bは、HレベルのHPD信号をHPDライン202を介してカメラ100に送信する。なお、EDIDの要求とは、テレビ300のEDIDを取得するための要求である。
カメラ100が接続されている接続端子に対応するEDIDに含まれる情報が変更された場合、HPD出力部303bは、カメラ100が接続されている接続端子に対応するテレビ300のEDIDをカメラ100に送信できないと判定する。この場合、カメラ100からのEDIDの要求によりカメラ100にテレビ300のEDIDを送信できないことをカメラ100に通知するため、HPD出力部303bは、LレベルのHPD信号をHPDライン202を介してカメラ100に送信する。
また、電源検出部303aによって電源伝送ライン201を介してカメラ100から所定の電源が供給されていないと検出された場合、HPD出力部303bは、LレベルのHPD信号をHPDライン202を介してカメラ100に送信する。
EDID出力部303cは、HPD出力部303bによってHPDライン202を介してカメラ100に送信されるHPD信号がHレベルである場合、DDCライン203を介して、カメラ100からEDIDを取得するための要求を受け付けたか否かを判定する。
HPD出力部303bからカメラ100に送信されるHPD信号がHレベルであり、カメラ100からEDIDを取得するための要求を受け付けた場合、EDID出力部303cは、テレビ300のEDIDをDDCライン203を介してカメラ100に送信する。
HPD出力部303bからカメラ100に送信されるHPD信号がLレベルである場合、EDID出力部303cは、カメラ100からEDIDを取得するための要求を受け付けたとしても、テレビ300のEDIDをカメラ100に送信しないようにする。
なお、EDID出力部303cは、メモリ306から読み出されテレビ300のEDIDをカメラ100にDDCライン203を介して送信する。
パケット受信部303dは、カメラ100から送信される映像データ、音声データ及び補助データを、TMDSライン204を介して受信する。
カメラ100からパケット受信部303dがTMDSライン204を介して受信した映像データは、メモリ306に記録され、表示部304に表示される。この場合、パケット受信部303dがTMDSライン204を介して、カメラ100から受信した音声データは、メモリ306に記録され、不図示のスピーカ部から出力される。また、この場合、パケット受信部303dがTMDSライン204を介して、カメラ100から受信した補助データは、CPU301に供給される。CPU301は、カメラ100から受信した補助データに従ってテレビ300を制御する。
コマンド処理部303eは、カメラ100から送信されたCECコマンドをCECライン205を介して受信する。コマンド処理部303eは、カメラ100から受信したCECコマンドを、CPU301に供給し、CPU301は、カメラ100からコマンド処理部303eが受信したCECコマンドに従ってテレビ300を制御する。
また、コマンド処理部303eは、カメラ100から受信したCECコマンドに応じて、Ack応答または、Nack応答をCECライン205を介してカメラ100に供給する。また、コマンド処理部303eは、カメラ100を制御するためのCECコマンドを、CECライン205を介してカメラ100に送信する。なお、カメラ100を制御するためのCECコマンドは、CPU301で生成され、CPU301からコマンド処理部303eに供給される。
なお、通信部303が有するHDMIケーブルを接続するための接続端子の数はテレビ300によって任意であり、2つ以上であってもよい。また、テレビ300は、接続端子の数だけHDMIケーブルを介してカメラ100以外のソース装置を接続することができる。
表示部304は、液晶ディスプレイ等の表示器により構成される。表示部304は、チューナ部302及びパケット受信部303dの少なくとも一つから供給された映像データを表示する。パケット受信部303dによってカメラ100から受信された映像データが供給された場合、表示部304はカメラ100から受信した映像データを表示する。
操作部305は、テレビ300を操作するためのユーザインターフェースを提供する。操作部305は、テレビ300を操作するための複数のボタンを有し、CPU301は、操作部305を介して入力されたユーザの指示に従ってテレビ300を制御する。操作部305に含まれる各ボタンは、スイッチ、タッチパネル等により構成される。操作部305はテレビ300を操作するための電源ボタン、チャンネル選択ボタン、外部入力ボタンなどを有する。
電源供給部307は、AC電源等からテレビ300の各部に必要な電源を供給する。テレビ300の電源状態が電源オン状態である場合、電源供給部307からテレビ300全体に電源が供給される。
ROM308は、CPU301によって実行されるテレビ300を制御するためのプログラムが記録されている。また、ROM308には、テレビ300で行われる処理や動作に対する閾値やテレビ300で行われる処理や動作に関するパラメータ等が記録されている。なお、ROM308は、ハードディスク装置等の記憶装置であってもよい。
リモコン信号受信部309は、リモコン400から供給されたリモコン信号を取得した場合、取得したリモコン信号をCPU301に供給する。これにより、リモコン400に入力されたリモコン信号は、リモコン信号受信部309を介してCPU301に入力されることになる。CPU301は、リモコン信号受信部309から入力されたリモコン信号に応じて、テレビ300及びカメラ100の少なくとも一つを制御することができる。リモコン信号受信部309から入力されたリモコン信号に応じてカメラ100を操作する場合、CPU301は、リモコン信号受信部309から供給されたリモコン信号に対応するCECコマンドを生成する。CPU301は、生成したCECコマンドをコマンド処理部303eに供給する。コマンド処理部303eに供給されたCECコマンドは、CECライン205を介してカメラ100に送信される。これにより、ユーザは、リモコン400を用いてカメラ100を制御することができる。
<リモコン400>
リモコン400は、カメラ100及びテレビ300の少なくとも一つを操作するためのユーザインタフェースを提供する。リモコン400は、カメラ100を操作するための複数のボタンと、テレビ300を操作するための複数のボタンとを有する。リモコン400に含まれる各ボタンは、スイッチ、タッチパネル等により構成される。
リモコン400は、テレビ300を操作するためのテレビ操作ボタン400aを有する。テレビ操作ボタン400aは、例えば、電源ボタン、チャンネル選択ボタン、外部入力ボタン等を含む。
リモコン400はさらに、カメラ100を操作するためのカメラ操作ボタン400bを有する。カメラ操作ボタン400bは、例えば、電源ボタン、再生ボタン、記録ボタン、停止ボタン、一時停止ボタン、早送りボタン、巻き戻しボタン、選択ボタン、メニューボタン、カーソルボタン等を含む。
カメラ操作ボタン400bの電源ボタンは、カメラ100の電源をオンにしたり、カメラ100の電源をオフにしたりするためのボタンである。カメラ操作ボタン400bの再生ボタンは、カメラ100に再生を指示するためのボタンである。カメラ操作ボタン400bの記録ボタンは、カメラ100に記録を指示するためのボタンである。カメラ操作ボタン400bの停止ボタンは、カメラ100によって行われる再生及び記録のいずれか一つを停止させるように指示するためのボタンである。カメラ操作ボタン400bの一時停止ボタンは、カメラ100によって行われる再生及び記録のいずれか一つを一時停止させるように指示するためのボタンである。カメラ操作ボタン400bの早送りボタンは、カメラ100にデータの早送りを指示するためのボタンである。カメラ操作ボタン400bの巻き戻しボタンは、カメラ100にデータの巻き戻しを指示するためのボタンである。カメラ操作ボタン400bの選択ボタンは、カメラ100によって記録または再生される映像データや音声データを選択するためのボタンである。カメラ操作ボタン400bのメニューボタンは、カメラ100のメニューの設定や表示を制御するためのボタンである。なお、カメラ操作ボタン400bは、電源ボタン、再生ボタン、記録ボタン、停止ボタン、一時停止ボタン、早送りボタン、巻き戻しボタン、選択ボタン、メニューボタン及びカーソルボタン以外の釦を含むものであってもよい。
(遠隔操作処理)
次に図3のフローチャートを参照し、リモコン400及びテレビ300を用いてカメラ100を遠隔操作するための遠隔操作処理について説明を行う。なお、図3に示す遠隔操作処理は、リモコン400が操作された場合に、テレビ300によって行われる処理である。図3に示す遠隔操作処理は、CPU301がROM308に記録されているプログラムを実行することによって、テレビ300によって行われる処理である。なお、CPU301は、サーバやOS(オペレーティングシステム)を介してメモリ306や不図示のCPU301のメモリに供給されたプログラムを実行することによって、図3に示す遠隔操作処理を行ってもよいものとする。なお、カメラ100とテレビ300とは、HDMIケーブル200を介して接続されているものとして、図3に示す遠隔操作処理について以下、説明を行う。
S301において、CPU301は、カメラ100のデバイスタイプに対応する論理アドレスがカメラ100に割り当てられているか否かを検出する。
カメラ100のデバイスタイプに対応する論理アドレスとは、例えば、CECプロトコルに規定されている論理アドレス「1」、「2」、「3」、「4」、「6」、「7」、「8」、「9」、「10」及び「11」のいずれか一つである。カメラ100のデバイスタイプに対応する論理アドレスがカメラ100に割り当てられている場合、テレビ300は、CECコマンドを用いてカメラ100に特定の処理を行わせるようにするための制御を行うことができる。カメラ100のデバイスタイプに対応する論理アドレスがカメラ100に割り当てられていない場合、テレビ300は、CECコマンドを用いてカメラ100に特定の処理を行わせるようにするための制御を行うことができない。この場合、ユーザがリモコン400を用いてカメラ100に対する操作を行ったとしても、リモコン400からリモコン信号受信部309に入力されたリモコン信号に対応するCECコマンドは、テレビ300からカメラ100に送信されない。
このため、CPU301によって、カメラ100のデバイスタイプに対応する論理アドレスがカメラ100に割り当てられていないと検出された場合(S301でNo)、ユーザは、カメラ100をリモコン400を用いて操作することができない。CPU301によって、カメラ100のデバイスタイプに対応する論理アドレスがカメラ100に割り当てられていないと検出された場合(S301でNo)、本フローチャートは終了する。CPU301によって、カメラ100のデバイスタイプに対応する論理アドレスがカメラ100に割り当てられていると検出された場合(S301でYes)、本フローチャートは、S301からS302に進む。
S302において、CPU301は、カメラ100がアクティブ状態であるか否かを判定する。例えば、CPU301は、コマンド処理部303eがCECライン205を介してカメラ100から<Active Source>コマンドを受信した否かを判定する。コマンド処理部303eがカメラ100から<Active Source>コマンドを受信した場合、CPU101は、カメラ100がアクティブ状態であると判定する。コマンド処理部303eがカメラ100から<Active Source>コマンドを受信していない場合、CPU101は、カメラ100がアクティブ状態でないと判定する。また、コマンド処理部303eがカメラ100以外のソース装置から<Active Source>コマンドを受信した場合、CPU101は、カメラ100がアクティブ状態でないと判定する。
CPU301によって、カメラ100がアクティブ状態であると判定された場合(S302でYes)、本フローチャートは、S302からS303に進む。CPU301によって、カメラ100がアクティブ状態でないと判定された場合(S302でNo)、本フローチャートは、S302からS302に戻る。なお、カメラ100がアクティブ状態でない場合(S302でNo)、CPU301は、リモコン400を用いてカメラ100を操作する必要がないと判定し、本フローチャートを終了させてもよいものとする。
S303において、CPU301は、テレビ300の設定に応じて、リモコン400を用いてカメラ100を操作することができるか否かを判定する。CPU301によって、リモコン400を用いてカメラ100を操作することができると判定された場合(S303でYes)、本フローチャートは、S303からS304に進む。CPU301によって、リモコン400を用いてカメラ100を操作することができないと判定された場合(S303でNo)、本フローチャートは、終了する。
S304において、CPU301は、リモコン400からリモコン信号受信部309に対してリモコン信号が入力されたか否かを判定する。リモコン400に含まれるボタンが押された場合、リモコン400からリモコン信号受信部309に対してリモコン信号が入力される。また、リモコン400に含まれるボタンが押されている状態から解除された場合、リモコン400からリモコン信号受信部309に対してリモコン信号が入力される。
CPU301によって、リモコン400からリモコン信号受信部309に対してリモコン信号が入力されたと判定された場合(S304でYes)、本フローチャートは、S304からS305に進む。CPU301によって、リモコン400からリモコン信号受信部309に対してリモコン信号が入力されていないと判定された場合(S304でNo)、本フローチャートは、S304からS304に戻る。
S305において、CPU301は、リモコン400からリモコン信号受信部309に対して入力されたリモコン信号に応じて、リモコン400のカメラ操作ボタン400bが操作されたか否かを判定する。CPU301によって、リモコン400のカメラ操作ボタン400bが操作されたと判定された場合(S305でYes)、本フローチャートは、S305からS306に進む。CPU301によって、リモコン400のカメラ操作ボタン400bが操作されていないと判定された場合(S305でNo)、CPU301は、リモコン400のテレビ操作ボタン400aが操作されたと判定する。この場合、CPU301は、リモコン信号受信部309に入力されたリモコン信号に応じて、テレビ300を制御する。CPU301によって、リモコン400のカメラ操作ボタン400bが操作されていないと判定された場合(S305でNo)、本フローチャートは、S305からS304に戻る。
S306において、CPU301は、リモコン400からリモコン信号受信部309に対して入力されたリモコン信号に応じて、カメラ操作ボタン400bが押されている状態であるか否かを判定する。CPU301によって、カメラ操作ボタン400bが押されている状態であると判定された場合(S306でYes)、本フローチャートは、S306からS307に進む。CPU301によって、カメラ操作ボタン400bが押されている状態でないと判定された場合(S306でNo)、CPU301は、カメラ操作ボタン400bが押されている状態から解除された状態であると判定する。CPU301によって、カメラ操作ボタン400bが押されている状態でないと判定された場合(S306でNo)、本フローチャートは、S306からS309に進む。
なお、S306において、CPU301は、リモコン400からリモコン信号受信部309に対して入力されたリモコン信号に応じて、カメラ100に特定の処理を行わせるための指示がリモコン400から入力されている状態であるか否かを判定してもよい。この場合、CPU301によって、カメラ100に特定の処理を行わせるための指示がリモコン400から入力されている状態でないと判定された場合(S306でNo)、本フローチャートは、S306からS309に進む。この場合、CPU301によって、カメラ100に特定の処理を行わせるための指示がリモコン400から入力されている状態であると判定された場合(S306でYes)、本フローチャートは、S306からS307に進む。 S307において、CPU301は、リモコン信号受信部309に入力されたリモコン信号に応じて、<User Control Pressed>コマンドをカメラ100にCECライン205を介して送信するようにコマンド処理部303eを制御する。
この場合、CPU301は、リモコン400からリモコン信号受信部309に入力されたリモコン信号に応じて、カメラ操作ボタン400bに含まれるどのボタンが押されているかを検出する。この結果、CPU301は、カメラ操作ボタン400bのうち操作が行われたボタンに対応する処理を示す情報を含む<User Control Pressed>コマンドをCECプロトコルに応じて生成し、コマンド処理部303eに供給する。さらに、CPU301は、生成した<User Control Pressed>コマンドをカメラ100にCECライン205を介して送信するようにコマンド処理部303eを制御する。なお、<User Control Pressed>コマンドは、CECプロトコルに規定されているCECコマンドである。また、<User Control Pressed>コマンドは、リモコン400の特定のボタンが押されている状態であることを示す。また、<User Control Pressed>コマンドは、リモコン400によって特定の処理がカメラ100に指示されている状態であることを示す。
なお、例えば、カメラ操作ボタン400bの再生ボタンが押された場合、S307において、CPU301は、カメラ100に再生を指示するための情報を含む<User Control Pressed>コマンドをカメラ100に送信するようにする。
また、例えば、カメラ操作ボタン400bの記録ボタンが押された場合、S307において、CPU301は、カメラ100に記録を指示するための情報を含む<User Control Pressed>コマンドをカメラ100に送信するようにする。
また、例えば、カメラ操作ボタン400bの早送りボタンが押された場合、S307において、CPU301は、カメラ100に早送りを指示するための情報を含む<User Control Pressed>コマンドをカメラ100に送信するようにする。
また、例えば、カメラ操作ボタン400bの巻戻しボタンが押された場合、S307において、CPU301は、カメラ100に巻戻しを指示するための情報を含む<User Control Pressed>コマンドをカメラ100に送信するようにする。
なお、<User Control Pressed>コマンドに含まれる情報は、再生を指示するための情報、記録を指示するための情報、早送りを指示するための情報及び巻戻しを指示するための情報の少なくとも一つであってもよい。また、<User Control Pressed>コマンドに含まれる情報は、再生を指示するための情報、記録を指示するための情報、早送りを指示するための情報及び巻戻しを指示するための情報以外の情報であってもよい。例えば、<User Control Pressed>コマンドに含まれる情報は、カメラ100に動画データ及び静止画データの少なくとも一つの撮影を開始させるための情報であってもよく、カメラ100にデータの送信を開始させるための情報であってもよい。
<User Control Pressed>コマンドがカメラ100に送信された場合、本フローチャートは、S307からS308に進む。
S308において、CPU301は、S302と同様にカメラ100がアクティブ状態か否かを判定する。CPU301によって、カメラ100がアクティブ状態であると判定された場合(S308でYes)、本フローチャートは、S308からS303に戻る。CPU301によって、カメラ100がアクティブ状態でないと判定された場合(S308でNo)、本フローチャートは、終了する。
S309において、CPU301は、リモコン信号受信部309に入力されたリモコン信号に応じて、<User Control Released>コマンドをカメラ100にCECライン205を介して送信するようにコマンド処理部303eを制御する。
この場合、CPU301は、リモコン400からリモコン信号受信部309に対して入力されたリモコン信号に応じて、カメラ操作ボタン400bに含まれるどのボタンが押されている状態から解除されたかを検出する。この結果、CPU301は、カメラ操作ボタン400bのうち操作が解除されたボタンに対応する処理を示す情報を含む<User Control Released>コマンドをCECプロトコルに応じて生成し、コマンド処理部303eに供給する。さらに、CPU301は、生成した<User Control Released>コマンドをカメラ100にCECライン205を介して送信するようにコマンド処理部303eを制御する。なお、<User Control Released>コマンドは、CECプロトコルに規定されているCECコマンドである。また、<User Control Released>コマンドは、リモコン400の特定のボタンが押されている状態から解除された状態であることを示す。また、<User Control Released>コマンドは、リモコン400によって特定の処理がカメラ100に指示されている状態から解除されたことを示す。
なお、例えば、カメラ操作ボタン400bの再生ボタンが離された場合、S309において、CPU301は、カメラ100に再生の停止を指示するための情報を含む<User Control Released>コマンドをカメラ100に送信するようにする。
また、例えば、カメラ操作ボタン400bの記録ボタンが離された場合、S309において、CPU301は、カメラ100に記録の停止を指示ための情報を含む<User Control Released>コマンドをカメラ100に送信するようにする。
また、例えば、カメラ操作ボタン400bの早送りボタンが離された場合、S309において、CPU301は、カメラ100に早送りの停止を指示するための情報を含む<User Control Released>コマンドをカメラ100に送信する。
また、例えば、カメラ操作ボタン400bの巻戻しボタンが離された場合、S309において、CPU301は、カメラ100に巻戻しの停止を指示するための情報を含む<User Control Released>コマンドをカメラ100に送信する。
なお、<User Control Released>コマンドに含まれる情報は、再生の停止を指示するための情報、記録の停止を指示するための情報、早送りの停止を指示するための情報及び巻戻しの停止を指示するための情報の少なくとも一つであってもよい。また、<User Control Released>コマンドに含まれる情報は、再生の停止を指示するための情報、記録の停止を指示するための情報、早送りの停止を指示するための情報及び巻戻しの停止を指示するための情報以外の情報であってもよい。例えば、<User Control Released>コマンドに含まれる情報は、カメラ100に動画データ及び静止画データの少なくとも一つの撮影を停止させるための情報であってもよい、カメラ100にデータの送信を停止させるための情報であってもよい。
<User Control Released>コマンドがカメラ100に送信された場合、S309からS308に進む。
なお、CPU301は、S302の処理を行うことなくS301の処理が行われた後、S303の処理を行うようにしてもよい。
実施例1に係るテレビ300は、図3の遠隔操作処理を行うようにした。これにより、テレビ300にカメラ100は、テレビ300から送信される<User Control Pressed>コマンド及び<User Control Released>コマンドに応じて、ユーザが所望する処理を行う。この場合に、<User Control Pressed>コマンドをコマンド処理部103eが受信した場合、カメラ100は、<User Control Pressed>コマンドに含まれる情報に対応する処理を開始するようにする。また、<User Control Released>コマンドをコマンド処理部103eが受信した場合、カメラ100は、<User Control Released>コマンドに含まれる情報に対応する処理を停止するようにする。例えば、コマンド処理部103eが受信した<User Control Pressed>コマンドにカメラ100に早送りを指示することを示す情報が含まれている場合、カメラ100は、カメラ100に記録されているデータを早送りするための処理を行う。また、コマンド処理部103eが受信した<User Control Released>コマンドにカメラ100に早送りの停止を指示することを示す情報が含まれている場合、カメラ100は、カメラ100に記録されているデータの早送りを停止する。なお、コマンド処理部103eによって受信された<User Control Pressed>コマンドに含まれる情報に対応する処理を、以下「所定の処理」と呼ぶ。
しかし、カメラ100にHDMIケーブルを介して接続されるテレビには、カメラ操作ボタン400bに含まれるボタンが押されている状態から解除された場合に<User Control Released>コマンドをカメラ100に送信しない装置がある。この場合、カメラ100は、ユーザに操作されていたカメラ操作ボタン400bが、押されている状態から解除されたか否かを検出することができない。そのため、カメラ100が所定の処理を行っている場合、カメラ100は、どのタイミングで所定の処理を停止させればいいのかを検出することができなかった。この場合、ユーザがカメラ操作ボタン400bに対して既に操作を行っていない場合であっても、カメラ100は、所定の処理を継続して行っていた。このことによって、ユーザの意図していない処理がカメラ100によって行われるという事態が発生していた。
このような事態を防ぐため、カメラ100は、図4に示す制御処理を行うことで、<User Control Pressed>コマンドを送信するが、<User Control Released>コマンドをカメラ100に送信しない装置と接続された場合であっても、ユーザの意図していない処理を行わないようにする。
図4に示す制御処理を行うことによって、カメラ100は、ユーザが外部の装置を用いてカメラ100を操作する場合に、ユーザの意図していない処理を行わないようにすることができる。
(制御処理)
次に図4のフローチャートを参照し、カメラ100によって行われる制御処理について説明を行う。なお、図4に示す制御処理は、CPU101がROM109に記録されているプログラムを実行することによって、カメラ100によって行われる処理である。なお、CPU101は、サーバやOSを介してメモリ102に供給されたプログラムを実行することによって、図4に示す制御処理を行ってもよいものとする。
S401において、CPU101は、メモリ102に記録されているフラグfがオフになるように設定し、メモリ102に記録されている回数Nの値をリセットする。なお、フラグfとは、テレビ300が<User Control Released>コマンドをカメラ100に送信するか否かを示す情報である。フラグfがオフである場合、CPU101は、テレビ300が<User Control Released>コマンドをカメラ100に送信する装置であると判定する。フラグfがオンである場合、CPU101は、テレビ300が<User Control Released>コマンドをカメラ100に送信しない装置であると判定する。なお、回数Nについては後述する。
フラグfがオフにされ、かつ、回数Nがリセットされた場合、本フローチャートは、S401からS402に進む。
S402において、CPU101は、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えるか否かを判定する。
例えば、CPU101は、コマンド処理部103eが<Polling Message>コマンドをテレビ300送信した場合に、Ack応答をコマンド処理部103eが受信したか否かを判定する。CPU101は、判定結果に応じて、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えるか否かを判定してもよい。この場合、CPU101は、<Polling Message>コマンドをテレビ300送信した後、コマンド処理部103eがAck応答を受信しなかったとき、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えないと判定する。
さらに、CPU101は、カメラ100に対応する論理アドレスを取得できたか否かに応じて、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えるか否かを判定してもよい。この場合、CPU101は、カメラ100に対応する論理アドレスを取得できなかった場合、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えないと判定する。
さらに、CPU101は、物理アドレスを取得できたか否かに応じて、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えるか否かを判定してもよい。この場合、CPU101は、カメラ100に対応する物理アドレスを取得できなかった場合、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えないと判定する。
さらに、CPU101は、HPD検出部103bがHレベルのHPD信号を検出したか否かに応じて、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えるか否かを判定してもよい。この場合、CPU101は、HPD検出部103bがHレベルのHPD信号を検出しなかった場合、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えないと判定する。
なお、CPU101は、<Polling Message>コマンドに対してコマンド処理部103eがAck応答を受信し、カメラ100に対応する論理アドレスを取得し、物理アドレスを取得し、HPD検出部103bがHレベルのHPD信号を検出し、かつ、<Active Source>コマンドをテレビ300に送信した場合、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えると判定するものとする。なお、CPU101は、<Polling Message>コマンドに対してコマンド処理部103eがAck応答を受信し、カメラ100に対応する論理アドレスを取得し、物理アドレスを取得し、HPD検出部103bがHレベルのHPD信号を検出し、かつ、<Active Source>コマンドをテレビ300に送信した場合、CPU101は、<Menu Status>コマンドをさらにテレビ300に送信するようにしてもよい。<Active Source>コマンドは、CECプロトコルに規定されているOne Touch Playを行うために用いられるCECコマンドである。
CPU101によって、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えると判定された場合(S402でYes)、本フローチャートは、S402からS403に進む。CPU101によって、コマンド処理部103eがCECライン205を介してテレビ300と通信を行えないと判定された場合(S402でNo)、本フローチャートは、S402からS424に進む。
S403において、CPU101は、コマンド処理部103eがテレビ300から<User Control Pressed>コマンド及び<User Control Released>コマンドのいずれか一つを受信したか否かを判定する。コマンド処理部103eが<User Control Pressed>コマンド及び<User Control Released>コマンドのいずれか一つを受信した場合(S403でYes)、本フローチャートは、S403からS404に進む。コマンド処理部103eがテレビ300から<User Control Pressed>コマンド及び<User Control Released>コマンドを受信していない場合(S403でNo)、本フローチャートは、S403からS415に進む。
S404において、CPU101は、S403でコマンド処理部103eがテレビ300から受信したコマンドが<User Control Released>コマンドであるか否かを判定する。CPU101によって、コマンド処理部103eが<User Control Released>コマンドをCECライン205を介してテレビ300から受信したと判定された場合(S404でYes)、本フローチャートは、S404からS411に進む。コマンド処理部103eが<User Control Released>コマンドを受信していない場合(S404でNo)、CPU101は、コマンド処理部103eが<User Control Pressed>コマンドを受信したと判定する。CPU101によって、コマンド処理部103eが<User Control Released>コマンドをCECライン205を介してテレビ300から受信していないと判定された場合(S404でNo)、本フローチャートはS404からS405に進む。
S405において、CPU101は、S403においてコマンド処理部103eによって受信された<User Control Pressed>コマンドに含まれる情報に対応する処理、つまり所定の処理が行われているか否かを判定する。CPU101によって、所定の処理が行われていると判定された場合(S405でYes)、本フローチャートは、S405からS409に進む。CPU101によって、所定の処理が行われていないと判定された場合(S405でNo)、本フローチャートは、S405からS406に進む。
S406において、CPU101は、タイマー101aによって計測される時間T1及びタイマー101bによって計測される時間T2をリセットする。S406において、CPU101は、メモリ102に記録される時間T1を示す値及び時間T2を示す値を0にする。この場合、本フローチャートは、S406からS407に進む。
S407において、CPU101は、テレビ300からコマンド処理部103eが<User Control Pressed>コマンドを受信してから経過した時間の計測を開始する。このため、CPU101は、時間T1を計測するようにタイマー101aを制御し、時間T2を計測するようにタイマー101bを制御する。この場合、本フローチャートは、S407からS408に進む。
S408において、CPU101は、S403においてコマンド処理部103eによって受信された<User Control Pressed>コマンドに対応する処理、つまり所定の処理を行う。CPU101は、<User Control Pressed>コマンドに含まれる情報に応じて、所定の処理を行う。この場合、本フローチャートは、S408からS402に戻る。
所定の処理が行われていると判定された場合(S405でYes)、CPU101は、既に所定の処理が行われている状態で<User Control Pressed>コマンドをコマンド処理部103eがテレビ300から1回以上受信していると判定する。
この場合、S409において、CPU101は、タイマー101bによって計測される時間T2をリセットする。なお、CPU101は、タイマー101aによって計測される時間T1をリセットしないようにする。S409において、CPU101は、メモリ102に記録される時間T2を示す値を0にする。この場合、本フローチャートは、S409からS410に進む。
S410において、CPU101は、時間T2を計測するようにタイマー101bを制御する。この場合、本フローチャートは、S410からS402に戻る。
なお、CPU101は、S409及びS410の処理によって、コマンド処理部103eが<User Control Pressed>コマンドを受信するたびに、時間T2の計測を始めからやり直すようにする。なお、CPU101は、時間T1の計測が開始された後に、コマンド処理部103eが<User Control Pressed>コマンドを受信したとしても、時間T1の計測を始めからやり直さないようにする。CPU101は、所定の処理が開始されてから経過した時間を計測するようにタイマー101aを制御してもよいものとする。
S411において、CPU101は、S403で<User Control Released>コマンドを受信する前に、コマンド処理部103eがテレビ300から<User Control Presssed>コマンドを受信したか否かを判定する。<User Control Released>コマンドを受信する前、テレビ300から<User Control Pressed>コマンドを受信した場合(S411でYes)、本フローチャートはS411からS412に進む。<User Control Released>コマンドを受信する前、テレビ300から<User Control Pressed>コマンドを受信していない場合(S411でNo)、本フローチャートはS411からS414に進む。
S412において、CPU101は、S406と同様に、タイマー101aによって計測される時間T1をリセットし、タイマー101bによって計測されるT2をリセットする。この場合、CPU101は、メモリ102に記録される時間T1を示す値及び時間T2を示す値を0にする。この場合、本フローチャートは、S412からS413に進む。
S413において、CPU101は、カメラ100に行われている所定の処理を停止する。S413において、CPU101によって停止される所定の処理は、<User Control Released>コマンドを受信する前、コマンド処理部103eが受信した<User Control Pressed>コマンドに含まれる情報に対応する処理である。さらに、CPU101は、停止された所定の処理に関するパラメータや情報を消去する。この場合、本フローチャートは、S413からS414に進む。
S414において、CPU101は、メモリ102に記録されているフラグfがオフになるように設定する。フラグfがオフにされた場合、本フローチャートは、S414からS402に戻る。
S415において、CPU101は、タイマー101aによって計測されている時間T1が0であるか否かを判定する。タイマー101aによって計測されている時間T1が0である場合、カメラ100によって所定の処理が行われていないことが想定される。また、この場合、コマンド処理部103eが、テレビ300から<User Control Pressed>コマンドを受信していないことが想定される。そのため、カメラ100は、ユーザがリモコンを用いてカメラ100に対する操作を行っていないことを検出することができる。タイマー101aによって計測されている時間T1が0である場合(S414でYes)、本フローチャートは、S415からS402に戻る。
また、タイマー101aによって計測されている時間T1が0でない場合、つまり、タイマー101aによって時間T1が計測されている状態である。この場合、カメラ100が所定の処理を行っている場合が想定される。また、この場合、コマンド処理部103eが、テレビ300から<User Control Pressed>コマンドを受信した後に<User Control Released>コマンドを受信していないことが想定される。
従来、CPU101は、コマンド処理部103eが<User Control Pressed>コマンドを受信してから<User Control Released>コマンドを受信するまでの間、所定の処理を継続して行っていた。この場合、CPU101は、コマンド処理部103eが<User Control Released>コマンドを受信した場合、所定の処理を停止するように制御していた。しかし、カメラ100にHDMIケーブルを介して接続されるテレビが、リモコン400に対するカメラ100を制御するための操作が解除された場合に、<User Control Released>コマンドをカメラ100に送信しない装置である場合がある。このようなテレビと接続されたカメラ100は、所定の処理をどのタイミングで停止するように制御すればいいのかを検出することができなかった。
このような場合、カメラ100は、ユーザがリモコン400を用いてカメラ100を既に操作していない場合に、テレビ300が<User Control Released>コマンドをカメラ100に送信する装置であるのか否かを検出できなかった。また、カメラ100は、ユーザがリモコン400を用いてカメラ100に対する操作を行い続けているため、テレビ300が<User Control Released>コマンドをカメラ100に送信してこないのか否かを検出することができなかった。
このため、ユーザがリモコン400を用いてカメラ100を操作していない場合であっても、CPU101は、所定の処理を停止しないように制御するため、カメラ100は、ユーザの意図していない処理を行う場合がある。このような事態を防ぐため、タイマー101aによって計測されている時間T1が0でない場合(S415でNo)、本フローチャートは、S415からS416に進む。
S416において、CPU101は、メモリ102に格納されているフラグfがオンであるか否かを検出する。CPU101によって、メモリ102に格納されているフラグfがオンであると検出された場合(S416でYes)、本フローチャートは、S416からS417に進む。CPU101によって、メモリ102に格納されているフラグfがオンでないと検出された場合(S416でNo)、本フローチャートは、S416からS418に進む。
S417において、CPU101は、タイマー101aによって計測されている時間T1が所定の時間A以上であるか否かを検出する。なお、所定の時間Aは、あらかじめROM109に格納されている閾値である。CPU101によって、タイマー101aによって計測されている時間T1が所定の時間A以上であると検出された場合(S417でYes)、本フローチャートは、S417からS412に進む。CPU101によって、タイマー101aによって計測されている時間T1が所定の時間A以上でないと検出された場合(S417でNo)、本フローチャートは、S417からS402に戻る。
S418において、CPU101は、タイマー101bによって計測されている時間T2が所定の時間B以上であるか否かを検出する。なお、所定の時間Bは、あらかじめROM109に格納されている閾値である。また、所定の時間Bは、HDMI規格に記載されている時間であり、HDMI規格には、560msecであることが開示されている。また、所定の時間Bは、所定の時間Aよりも長い時間であるものとする。また、所定の時間Aは、所定の時間Bよりも短い時間であって、0msecよりも長い時間であれば、どのような時間であっても良いものとする。CPU101によって、タイマー101bによって計測されている時間T2が所定の時間B以上であると検出された場合(S418でYes)、本フローチャートは、S418からS419に進む。CPU101によって、タイマー101bによって計測されている時間T2が所定の時間B以上でないと検出された場合(S418でNo)、本フローチャートは、S418からS402に戻る。
S419において、CPU101は、タイマー101bによって計測される時間T2をリセットする。CPU101は、メモリ102に記録されている時間T2を示す値を0にする。この場合、本フローチャートは、S419からS420に進む。
S420において、CPU101は、S413と同様に、所定の処理を停止するように制御する。この場合も、CPU101は、所定の処理に関するパラメータや情報を消去する。なお、この場合、CPU101は、タイマー101aによって計測される時間T1をリセットし、メモリ102に記録される時間T1を示す値を0にしてもよい。この場合、本フローチャートは、S420からS421に進む。
S421において、CPU101は、メモリ102に記録されている回数Nの値を加算するように制御する。なお、回数Nは、時間T2が所定の時間B以上である場合に所定の処理を停止するための処理が行われた回数を示す情報である。なお、CPU101は、時間T2が所定の時間B以上である場合(S418でYes)にS419及びS420の処理を行った後、回数Nの値に1を加算するものとする。回数Nの値が加算された場合、本フローチャートは、S421からS422に進む。
S422において、CPU101は、メモリ102に記録されている回数Nの値が1であるか否かを判定する。CPU101によって、回数Nの値が1であると判定された場合(S422でYes)、本フローチャートは、S422からS423に進む。CPU101によって、回数Nの値が1でないと判定された場合(S422でNo)、つまり、回数Nが2回以上であると判定される。この場合(S422でNo)、本フローチャートは、S422からS402に戻る。
S423において、CPU101は、メモリ102に記録されているフラグfがオンになるように設定する。フラグfがオンにされた場合、本フローチャートは、S423からS402に戻る。
なお、S423の処理によって、フラグfがオンにされた場合、CPU101は、以後、フラグfがオフにされるまで、S418、S419、S420、S421、S422及びS423の処理を行わないようにする。このことによって、CPU101は、フラグfがオフにされるまで、S417の処理を行い、S412、S413及びS414の処理を行うか否かを制御するようにする。
回数Nの値が1である場合(S422でYes)、S423の処理によって、CPU101は、テレビ300が<User Control Released>コマンドをカメラ100に送信しない装置であると判定することができる。このため、CPU101は、S417の処理を行い、S412、S413及びS414の処理を行うか否かを制御するようにする。これによって、カメラ100は、テレビ300が<User Control Released>コマンドを送信しない装置であっても、自動的に所定の処理を停止することができる。
回数Nの値が1でない場合(S422でNo)、テレビ300が<User Control Released>コマンドをカメラ100に送信する装置であるが、<User Control Released>コマンドを送信しない場合が想定される。この場合、ユーザがリモコン400を用いてカメラ100を操作している可能性があるため、CPU101は、S417、S412、S413及びS414の処理を行わないようにし、S418、S419、S420及びS422の処理を行うようにする。この場合、時間T2が所定の時間B以上であると判定されるまで、CPU101は、<User Control Pressed>コマンドに対応する所定の処理を継続して行うようにする。
S424において、CPU101は、S406と同様に、タイマー101aによって計測される時間T1をリセットし、タイマー101bによって測定される時間T2をリセットする。CPU101は、メモリ102に記録されている時間T1を示す値及び時間T2を示す値を0にする。この場合、本フローチャートは、S424からS425に進む。
S425において、CPU101は、S413と同様に、所定の処理を停止するようにする。この場合も、CPU101は、所定の処理に関するパラメータや情報を消去する。この場合、本フローチャートは、S425からS426に進む。
なお、S425において、CPU101は、カメラ100がCECライン205を介してテレビ300と通信を行えないため、<User Control Pressed>コマンドに対応する所定の処理を行う必要はないと判定する。 S426において、CPU101は、メモリ102に記録されているフラグfがオフになるように設定し、回数Nをリセットする。CPU101は、メモリ102に記録されている回数Nの値を0にする。フラグfがオフにされ、かつ、回数Nがリセットされた場合、本フローチャートは、終了する。
このように実施例1に係る通信装置100は、外部装置が<User Control Released>コマンドを送信する装置であるか否かを検出するようにした。
通信装置100は、外部装置が<User Control Released>コマンドを送信しない装置である場合、<User Control Pressed>コマンドによって指示される処理を停止するための制御を行った。
通信装置100は、外部装置が<User Control Released>コマンドを送信する装置でない場合に、所定の時間Aが経過したとき、外部装置から受信した<User Control Pressed>コマンドによって指示される処理を停止する。この場合、通信装置100は、<User Control Released>コマンドを送信していない場合であっても、自動的に外部装置から受信した<User Control Pressed>コマンドによって指示される処理を停止する。このため、ユーザがリモコン400を用いて通信装置100を操作していない場合であっても、通信装置100は、ユーザの意図していない処理を行わないようにすることができる。
通信装置100は、外部装置が<User Control Released>コマンドを送信する装置である場合、<User Control Pressed>コマンドによって指示される処理を停止するための制御を行った。通信装置100は、外部装置が<User Control Released>コマンドを送信する装置である場合に、所定の時間Bが経過したとき、外部装置から受信した<User Control Pressed>コマンドによって指示される処理を停止する。この場合、通信装置100は、ユーザがリモコン400を用いて通信装置100を操作している場合、所定の時間Aが経過したとしても、<User Control Pressed>コマンドによって指示される処理を停止しないようにする。この場合、所定の時間Bが経過した場合、<User Control Pressed>コマンドによって指示される処理を停止するので、通信装置100は、ユーザの意図していない処理を行わないようにすることができる。
なお、コマンド処理部103eが<User Control Released>コマンドを受信した場合(S411でYes)、通信装置100は、S414において、フラグfをオフに設定するようにした。また、時間T2が所定の時間B以上である場合、(S418でYes)で、回数Nの値が1である場合(S422でYes)、通信装置100は、S423において、フラグfをオンに設定するようにした。
これによって、通信装置100は、フラグfに応じて、外部装置が<User Control Released>コマンドを通信装置100に送信する装置であるか否かを検出することができる。
S422において、CPU101は、メモリ102に記録されている回数Nの値が1であるか否かを判定するようにした。しかし、これに限られないものとする。例えば、S422において、CPU101は、メモリ102に記録されている回数Nの値が所定の回数M以上であるか否かを判定するようにしてもよい。この場合、CPU101によって、回数Nの値が所定の回数M以上であると判定された場合(S422でYes)、本フローチャートは、S422からS423に進む。CPU101によって、回数Nの値が所定の回数M以上でないと判定された場合(S422でNo)、本フローチャートは、S422からS402に戻る。なお、所定の回数Mは、1以上の値であれば、どの値であってもよいものとする。
なお、通信装置100は、CECコマンドを用いて問い合わせることによって、外部装置が<User Control Released>コマンドを送信する装置であるか否かを検出するようにしてもよい。CECコマンドを用いて、外部装置が<User Control Released>コマンドを送信しない装置であることが検出された場合、通信装置100は、フラグfをオンに設定するようにする。
また、通信装置100は、外部装置から取得したEDIDや情報を用いることによって、外部装置が<User Control Released>コマンドを送信する装置であるか否かを検出するようにしてもよい。EDIDを用いて、外部装置が<User Control Released>コマンドを送信しない装置であることが検出された場合、通信装置100は、フラグfをオンに設定するようにする。
実施例1において、所定の時間A及び所定の時間Bは、あらかじめROM109に格納されている閾値としたが、ユーザによって変更可能な閾値であっても良いものとする。また、所定の時間Bは、所定の時間Aよりも長い時間であれば、HDMI規格に記載されている時間と異なる時間であってもよい。
なお、リモコン400は、テレビ操作ボタン400a及びカメラ操作ボタン400bを含むものとした。しかし、リモコン400は、タッチパネルを有する場合、テレビ操作ボタン400aに対するGUI(グラフィカルユーザインターフェース)及びカメラ操作ボタン400bに対応するGUIをタッチパネルに表示させるものであってもよい。この場合、リモコン400のタッチパネルに表示されるカメラ操作ボタン400bに対応するGUIがユーザによって操作された場合、リモコン400及びテレビ300は、カメラ操作ボタン400bがユーザによって押された場合と同様の動作を行うものとする。リモコン400のタッチパネルに表示されるカメラ操作ボタン400bに対応するGUIがユーザによって操作されなくなった場合、リモコン400及びテレビ300は、カメラ操作ボタン400bが押された状態から解除された場合と同様の動作を行うものとする。
また、カメラ操作ボタン400bは、スイッチであっても良いものとする。なお、カメラ操作ボタン400bは、リモコン400に含まれるものとしたが、テレビ300の操作部305に含まれるものであってもよい。操作部305に含まれるカメラ操作ボタン400bがユーザに操作された場合も、リモコン400のカメラ操作ボタン400bが操作された場合と同様の処理をテレビ300及びカメラ100は行うものとする。
また、実施例1において、外部装置300がHDMIシンクとしての機能を持つ装置であれば、通信装置100は、HDMIリピータとして機能する装置であってもよいものとする。
実施例1において、テレビ300は、リモコン400のカメラ操作ボタン400bが操作された場合、<User Control Pressed>コマンドをカメラ100に送信するようにした。しかし、この場合、テレビ300は、<User Control Pressed>コマンドの代わりにカメラ操作ボタン400bうち操作が行われたボタンに対応する処理を示す情報を含むVendor(ベンダー)コマンドをカメラ100に送信してもよい。なお、カメラ操作ボタン400bうち操作が行われたボタンに対応する処理を示す情報を含むVendorコマンドは、<Vendor Remote Button Down>コマンドであってもよいものとする。
実施例1において、テレビ300は、リモコン400のカメラ操作ボタン400bが操作された場合、<User Control Released>コマンドをカメラ100に送信するようにした。しかし、この場合、テレビ300は、<User Control Released>コマンドの代わりに、カメラ操作ボタン400bのうち操作が解除されたボタンに対応する処理を示す情報を含むVendorコマンドをカメラ100に送信してもよい。なお、カメラ操作ボタン400bのうち操作が解除されたボタンに対応する処理を示す情報を含むVendorコマンドは、<Vendor Remote Button Up>コマンドであってもよいものとする。
(他の実施例)
本発明に係る通信装置100は、実施例1で説明した通信装置100に限定されるものではない。また、本発明に係る外部装置300は、実施例1で説明した外部装置300に限定されるものではない。例えば、本発明に係る通信装置100は、複数の装置から構成されるシステムにより実現することも可能であり、本発明に係る外部装置300は、複数の装置から構成されるシステムにより実現することも可能である。
また、実施例1において説明した通信装置によって行われる処理及び通信装置の機能は、コンピュータ(CPU等を含む)がプログラムを実行することによって実現することも可能である。この場合、本発明に係るプログラムは、コンピュータで実行可能であり、実施例1で説明した様々な機能を実現することになる。
また、実施例1において説明した外部装置によって行われる処理及び外部装置の機能は、プログラムにより実現することも可能である。この場合、本発明に係るプログラムは、コンピュータで実行可能であり、実施例1で説明した様々な機能を実現することになる。
本発明に係るプログラムは、コンピュータ上で稼動しているOSなどを用いて、実施例1で説明した様々な処理及び機能を実現してもよいことは言うまでもない。
本発明に係るプログラムは、コンピュータによって読取可能な記録媒体から読み出され、コンピュータで実行されることになる。コンピュータによって読取可能な記録媒体には、ハードディスク装置、光ディスク、CD−ROM、CD−R、メモリカード、ROM等を用いることができる。また、本発明に係るプログラムは、通信インターフェースを介して外部装置から提供されたものであってもよい。
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために以下の請求項を添付する。