図1は、本発明の第1の実施例における、撮像装置であるところの監視カメラ1000と外部機器であるところのクライアント装置2000とで構成される撮像システムを説明するためのシステム構成図である。ここで、監視カメラ1000とクライアント装置2000は、LAN等で構成されたIPネットワーク網1500を介し、相互に通信可能な状態に接続されている。
図1におけるクライアント装置2000は、監視カメラ1000に対し、後述する撮像パラメータの変更を指示するためのコマンドや、動画や音声などのストリーミングの開始を指示するためのコマンドを送信する。一方、監視カメラ1000は、これらのコマンドに対するレスポンスをクライアント装置に送信し、クライアント装置2000に対して動画や音声などのストリーミングを開始する。
続いて、図2は、本実施例における、監視カメラ1000およびクライアント装置2000のそれぞれの内部構成を示すブロック図である。ここで、図2(a)は、監視カメラ1000の内部構成を示すブロック図である。また、図2(b)は、クライアント装置2000の内部構成を示すブロック図である。
図2(a)における制御部1001は、CPU等で構成される。また、制御部1001は、監視カメラ1000の各構成要素を統括的に制御する。また、記憶部1002は、主に制御部1001が実行するプログラム格納領域、プログラム実行中のワーク領域、後述する撮像部1004で生成される画像データの格納領域等、様々なデータの格納領域として使用される。
配信画像メモリ1003は、後述する圧縮符号化部1006で圧縮符号化された画像データを一時的に保存しておくための記憶領域である。また、撮像部1004は、監視カメラ1000の撮像光学系(不図示)により結像された被写体の像を撮像して取得したアナログ信号をデジタル信号に変換し、撮像画像として記憶部1002に出力する。
画像処理部1005は、撮像部1004が出力した撮像画像を後述のRotateの値に応じて回転させ、この回転させた撮像画像を圧縮符号化部1006に入力する。例えば、本実施例における画像処理部1005は、撮像部1004から出力された撮像画像を、この撮像画像の中央を中心として回転させる画像回転部に相当する。
圧縮符号化部1006は、画像処理部1005から出力された撮像画像に対し、JPEG或いはH.264等の圧縮符号化方式で圧縮符号化処理を施す。次に、圧縮符号化部1006は、このような圧縮符号化処理を施した撮像画像を、記憶部1002及び配信画像メモリ1003に出力する。
通信部1007は、クライアント装置2000とのデータのやり取りに用いられる。例えば、通信部1007は、クライアント装置2000からのコマンドをIPネットワーク網1500経由で受信し、受信したコマンドを制御部1001に出力する。また、通信部1007は、制御部1001から出力されたレスポンスをIPネットワーク網1500経由でクライアント装置2000に送信する。
図2(b)における制御部2001は、CPU等で構成される。また、制御部2001は、クライアント装置2000の各構成要素を統括的に制御する。次に、記憶部2002は、主に制御部2001が実行するプログラム格納領域、プログラム実行中のワーク領域等、様々なデータの格納領域として使用される。
表示部2003は、例えばLCD、有機ELディスプレイ等で構成される。表示部2003は、クライアント装置2000のユーザに情報を表示するものである。具体的には、表示部2003は、後述の配信画像設定画面を含む様々な設定画面や、監視カメラ1000からストリーミングされた動画のビューワ、各種メッセージ等を表示する。
入力部2004は、例えばボタン、十字キー、タッチパネル、マウス等で構成される。また、入力部2004は、ユーザによる画面操作の内容を制御部2001に通知する。次に、復号部2005は、通信部2006から出力された画像データに対し、JPEG或いはH.264等の圧縮符号化形式で復号化処理を施して記憶部2002に展開する。
通信部2006は、監視カメラ1000とのデータのやり取りに用いられる。例えば、通信部2006は、監視カメラ1000へのコマンドをIPネットワーク網1500経由で送信する。また、通信部2006は、監視カメラ1000からのレスポンスをIPネットワーク網1500経由で受信し、受信したレスポンスを制御部2001に出力する。通信部2006は、動画や音声等のストリーミングを監視カメラ1000から受信する。
なお、本実施例における監視カメラ1000及びクライアント装置2000は、図2で示した構成に限られるものではない。例えば、音声入力部や音声出力部を監視カメラ1000及びクライアント装置2000に設けても良い。また、撮像部1004をパン方向およびチルト方向に回転させるパンチルト機構を監視カメラ1000に設けても良い。
続いて、図3は、本実施例において、監視カメラ1000が保持するパラメータの構造を説明するための図である。図3におけるMediaProfile3000、3001、3002は、監視カメラ1000の各種設定項目を関連付けるためのパラメータセットである。これらMediaProfile3000、3001、3002は、記憶部1002に記憶される。
MediaProfile3000、3001、3002のそれぞれは、MediaProfileの識別子であるProfileTokenを保持する。
ここで、本実施例では、MediaProfile3000のProfileTokenは、「Profile1」である。また、MediaProfile3001のProfileTokenは、「Profile2」である。そして、MediaProfile3002のProfileTokenは、「Profile3」である。
また、MediaProfile3000、3001、3002のそれぞれは、後述するVideoSourceConfiguration(以下、VSCと略する。)に関連付けられる。さらに、MediaProfile3000、3001、3002のそれぞれは、後述するVideoEncoderConfiguration(以下、VECと略する。)に関連付けられる。
なお、本実施例におけるMediaProfile3000、3001、3002は、VSC、VEC以外の各種設定項目とも関連付けられているものとする。
VideoSource3001は、監視カメラ1000が備える撮像部1004の性能を示すパラメータの集合体である。VideoSource3001は、VideoSoureTokenとResolutionとを含む。ここで、VideoSourceTokenは、VideoSource3001の識別子である。また、Resolutionは、撮像部1004が出力可能な撮像画像(画像データ)の解像度を示す。
VSC3010は、MediaProfile3000、3001及び3002のそれぞれに、監視カメラ1000が備えるVideoSource3001を関連付けるためのパラメータの集合体である。ここで、VSC3010は、VideoSource3001の識別子であるVideoSourceTokenを含む。
また、VSC3010は、撮像部1004から出力された画像データを圧縮符号化部1006に入力する際に、時計回りに画像データを回転させる角度を指定するためのRotateを保持する。
VEC3020、3021および3022のそれぞれは、画像データの圧縮符号化に関する圧縮符号化部1006の設定をMediaProfile3000、3001および3002のそれぞれに関連付けるためのパラメータの集合体である。
図3に示すように、MediaProfile3000は、VEC3020に関連付けられている。また、MediaProfile3001は、VEC3021に関連付けられている。さらに、MediaProfile3002は、VEC3022に関連付けられている。
VEC3020、3021および3022のそれぞれは、VECの識別子であるIDと、圧縮符号化方式を指定するためのTypeと、圧縮符号化部1006から出力される撮像画像の解像度を指定するためのResolutionと、を含む。
なお、本実施例におけるVEC3020、3021及び3022のそれぞれには、圧縮符号化品質を指定するためのQualityと、出力画像の最大フレームレートを指定するためのFramerateLimitとを、さらに含めても良い。また、VEC3020、3021及び3022のそれぞれには、最大ビットレートを指定するためのBitrateLimit等を、さらに含めても良い。
ここで、MediaProfile3000を用いた監視カメラ1000の振る舞いについて説明する。撮像部1004および画像処理部1005は、MediaProfile3000に関連付けられたVideoSource3001及びVSC3010の内容に従い、撮像画像を出力する。
次に、圧縮符号化部1006は、出力された撮像画像を、MediaProfile3000に関連付けられたVEC3020の内容に従い、圧縮符号化する。そして、圧縮符号化された撮像画像は、通信部1007経由でクライアント装置2000に配信される。
続いて、図4は、本実施例における、記憶部1002に記憶されている解像度テーブルを示した図である。図4に示す解像度テーブルには、複数のRotateの値と、これら複数のRotateの値のそれぞれに対応付けられたエンコーダ解像度と、が記憶されている。ここで、エンコーダ解像度とは、圧縮符号化部1006から出力される撮像画像の解像度を示す。
具体的には、図4に示す解像度テーブルには、監視カメラ1000に対して指定することができるVSCのRotateの値として、「0度」、「90度」、「180度」及び「270度」の4種類が記憶されている。
また、図4に示す解像度テーブルには、Rotateの値が「0度」及び「180度」の場合に指定することができるVECのResolutionの選択肢として、「400×240」、「1280×720」及び「1920×1080」が記憶されている。
さらに、図4に示す解像度テーブルには、Rotateの値が「90度」及び「180度」の場合に指定することができるVECのResolutionの選択肢として、「240×400」、「720×1280」及び「1080×1920」が記憶されている。
従って、本実施例における記憶部1002は、複数の解像度とこれら複数の解像度のそれぞれに対応する角度とを対応付けて記憶する記憶部に相当する。
続いて、図5は、監視カメラ1000の設置方向と、撮像画像と、VSCのRotateの設定値と、圧縮符号化部1006への入力画像と、の関係を説明するための図である。
図5(a)は、監視カメラ1000が正立方向に設置されている場合を例示する。この場合、撮像部1004で撮像される被写体の重力方向は、ユーザの重力方向に一致する。このため、クライアント装置2000は、監視カメラ1000のRotateの値を「0度」から変更する必要はない。
図5(c)は、監視カメラ1000が倒立方向に設定されている場合を例示する。この場合、撮像部1004で撮像される被写体の重力方向は、ユーザの重力方向と正反対になる。このため、クライアント装置2000は、監視カメラ1000のRotateの値を「180度」に設定することで、撮像部1004で撮像される被写体の重力方向とユーザの重力方向とを一致させるべきである。
ここで、この設定により、撮像部1004で撮像される被写体の重力方向とユーザの重力方向とを一致させた画像を、図5(c)における「圧縮符号化部に入力される画像」として示した。
なお、本実施例では、クライアント装置2000が監視カメラ1000のRotateの値を「180度」に設定するように構成したが、これに限られるものではない。例えば、重力を自動で検出する機構を監視カメラ1000に設けることで、監視カメラ1000自身が自動でRotateの値を「180度」に設定するように構成しても良い。
図5(b)は、監視カメラ1000が横転方向に設定されている場合を例示する。この場合、撮像部1004で撮像される被写体の重力方向は、ユーザの重力方向に対し、反時計回りに横転している。このため、クライアント装置2000は、監視カメラ1000のRotateの値を「90度」に設定することで、撮像部1004で撮像される被写体の重力方向とユーザの重力方向とを一致させるべきである。
ここで、この設定により、撮像部1004で撮像される被写体の重力方向とユーザの重力方向とを一致させた画像を、図5(b)における「圧縮符号化部に入力される画像」として示した。
なお、本実施例では、クライアント装置2000が監視カメラ1000のRotateの値を「90度」に設定するように構成したが、これに限られるものではない。例えば、重力を自動で検出する機構を監視カメラ1000に設けることで、監視カメラ1000自身が自動でRotateの値を「90度」に設定するように構成しても良い。
図5(d)は、監視カメラ1000が横転方向に設定されている場合を例示する。この場合、撮像部1004で撮像される被写体の重力方向は、ユーザの重力方向に対し、時計回りに横転している。このため、クライアント装置2000は、監視カメラ1000のRotateの値を「270度」に設定することで、撮像部1004で撮像される被写体の重力方向とユーザの重力方向とを一致させるべきである。
ここで、この設定により、撮像部1004で撮像される被写体の重力方向とユーザの重力方向とを一致させた画像を、図5(d)における「圧縮符号化部に入力される画像」として示した。
なお、本実施例では、クライアント装置2000が監視カメラ1000のRotateの値を「270度」に設定するように構成したが、これに限られるものではない。例えば、重力を自動で検出する機構を監視カメラ1000に設けることで、監視カメラ1000自身が自動でRotateの値を「270度」に設定するように構成しても良い。
また、図5(b)および(d)の場合には、撮像部1004から出力される撮像画像のアスペクト比と、圧縮符号化部1006に入力される撮像画像のアスペクト比とは、異なる。
続いて、図6は、監視カメラ1000とクライアント装置2000とにおける、配信画像のパラメータを設定する際の典型的なコマンドシーケンスを説明するためのシーケンス図である。
図6における6000は、機器探索のトランザクションである。クライアント装置2000は、ネットワーク上に接続されている監視カメラを探索するべく探索条件を含むProbeコマンドをマルチキャストで送信する。Probeコマンドを受信した監視カメラのうち、探索条件に合致するものは、ProbeMatchコマンドをProbeコマンドの送信元に返送し、探索が完了する。
6001は、機能取得のトランザクションである。クライアント装置2000は、ProbeMatchを返送した監視カメラ1000に対して、この監視カメラ1000のサポートしている機能を取得するべくGetServicesコマンドを送信する。
そして、このGetServiciesコマンドを受信した監視カメラ1000は、GetServicesレスポンスを返送し、自己のサポートする機能の一覧をクライアント装置2000へ提供する。
6002は、イベント登録のトランザクションである。クライアント装置2000は、監視カメラ1000で発生したイベントトリガを監視カメラ1000に通知させるべく、Subsribe要求を監視カメラ1000に送信する。
そして、Subscribe要求を受信した監視カメラ1000は、Subscribe要求の内容に問題が無い場合は、SubscribeIDと共に、Subscribe応答をクライアント装置2000に返送する。
6003は、GetProfilesトランザクションである。クライアント装置2000は、GetProfilesコマンドを監視カメラ1000に送信する。そして、GetProfilesコマンドを受信した監視カメラ1000は、監視カメラ1000が保持するMediaProfileのリストをクライアント装置2000に送信する。
なお、このMediaProfileのリストには、このリストが含むMediaProfileのそれぞれに関連付けられたVSCやVECの内容も含まれる。
6004は、GetStreamUriトランザクションである。クライアント装置2000は、GetStreamUriコマンドを監視カメラ1000に送信する。この送信されたGetStreamUriコマンドには、MediaProfileのProfileTokenが含まれる。
このコマンドを受信した監視カメラ1000は、このコマンドに含まれるProfileTokenで識別されるMediaProfileの内容に従い、ストリーミングを開始するためのStreamURIをクライアント装置2000に返送する。
6005は、RTSPのDescribeコマンドのトランザクションである。クライアント装置2000は、Describeコマンドを監視カメラ1000に送信する。この送信されたDescribeコマンドには、StreamURIが含まれる。このコマンドを受信した監視カメラ1000は、このコマンドに含まれるStreamURIに対応するストリーミングのコンテンツの情報をクライアント装置2000に返送する。
6006は、RTSPのSetupコマンドのトランザクションである。クライアント装置2000は、Setupコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、ストリーミングの伝送方法の情報をクライアント装置200に送信する。
6007は、RTSPのPlayコマンドのトランザクションである。クライアント装置2000は、Playコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、クライアント装置2000へのストリーミングを開始する。
6008は、RTPストリーミングである。監視カメラ1000は、6005でクライアント装置2000と共有したコンテンツの内容を、6006でクライアント装置2000と共有した伝送方法によって、クライアント装置2000へストリーミングする。このストリーミングは、6015のRTSPのTeardownコマンドの受信や、ネットワークの切断等が発生するまで継続的に行われる。
6009は、GetVideoSourceConfigurationOptionsコマンド(以下、GetVSCOptionsコマンドと略する。)のトランザクションである。クライアント装置2000は、GetVSCOptionsコマンドを監視カメラ1000に送信する。
このコマンドを受信した監視カメラ1000は、GetVSCOptionsコマンドのレスポンスをクライアント装置2000に送信する。このレスポンスは、後述するSetVideoSourceConfigurationコマンド(以下、SetVSCコマンドと略する。)で指定することができる各パラメータの選択肢を含む。
例えば、本実施例では、GetVSCOptionsコマンドのレスポンスは、Rotateの選択肢として、「0度」、「90度」、「180度」及び「270度」を含む。
6010は、GetVideoEncorderConfigurationOptionsコマンド(以下、GetVECOptionsコマンドと略する。)のトランザクションである。クライアント装置2000は、GetVECOptionsコマンドを監視カメラ1000に送信する。
このコマンドを受信した監視カメラ1000は、GetVECOptionsコマンドのレスポンスをクライアント装置2000に送信する。このレスポンスは、後述するSetVideoEncorderConfigurationコマンド(以下、SetVECコマンドと略する。)で指定することができる各パラメータの選択肢を含む。
例えば、本実施例では、GetVECOptionsコマンドのレスポンスは、監視カメラ1000の現在のRotateの値が「90度」である場合には、次のようなResolutionの選択肢を含む。即ち、「240×400」、「720×1280」及び「1080×1920」である。
6011は、SetVSCコマンドのトランザクションである。クライアント装置2000は、SetVSCコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、この受信したコマンドに応じ、監視カメラ1000の保持するVSCを更新する。
具体的には、まず、クライアント装置2000は、SetVSCコマンドを監視カメラ1000に送信する。このSetVSCコマンドのRotateの値は、6009のGetVSCOptionsコマンドのレスポンスに含まれるRotateの選択肢のうちのいずれか1つの項目である。
次に、監視カメラ1000は、監視カメラ1000の保持するVSCのRotateの値を、クライアント装置2000から受信したSetVSCコマンドに含まれるRotateの値で更新する。
なお、本実施例におけるSetVSCコマンドは、撮像部1004から出力された撮像画像を、この設定されたRotateの値だけ画像処理部1005に回転させるための回転命令に相当する。また、本実施例における通信部1007は、Rotateが含まれるSetVSCコマンドを受信する角度受信部としての役割を果たす。
6012及び6014は、監視カメラ1000の設定が変更されたことを通知する設定変更イベントである。監視カメラ1000は、6002のようなSubscribeコマンドで登録されたクライアント装置2000に対して、VSCやVECの内容が変更されたことを示すイベントを設定変更イベントとして送信する。
6013は、SetVECコマンドのトランザクションである。クライアント装置2000は、SetVECコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、この受信したコマンドに応じ、監視カメラ1000の保持するVECを更新する。
具体的には、まず、クライアント装置2000は、SetVECコマンドを監視カメラ1000に送信する。このSetVECコマンドのResolutionの値は、6010のGetVECOptionsコマンドのレスポンスに含まれるResolutionの選択肢のうちのいずれか1つの項目である。
次に、監視カメラ1000は、監視カメラ1000の保持するVECのResolutionの値を、クライアント装置2000から受信したSetVECコマンドに含まれるResolutionの値で更新する。
したがって、本実施例におけるSetVECコマンドは、圧縮符号化部1006に対する解像度命令であって、画像処理部1005で回転させられた撮像画像を、このコマンドに含まれるResolutionで圧縮符号化させるための解像度命令に相当する。
続いて、図7は、SetVSCコマンド受信処理を示すフローチャートである。この処理は、図6で示した6011のトランザクションにおいて、クライアント装置2000から送信されたSetVSCコマンドを監視カメラ1000が受信した場合に、制御部1001により開始されるものである。
具体的には、制御部1001は、クライアント装置2000からSetVSCコマンドを受信したか否かを判定する。そして、制御部1001は、クライアント装置2000からSetVSCコマンドを受信したと判定した場合には、図7に示す処理を開始する。一方、制御部1001は、クライアント装置2000からSetVSCコマンドを受信していないと判定した場合には、図7に示す処理を開始しない。
図7におけるステップS7001では、制御部1001は、クライアント装置2000から受信したSetVSCコマンドを用いて、Rotateの値が変更されているか否かを判定する。
具体的には、まず、制御部1001は、この受信したSetVSCコマンドに含まれるTokenの値とTokenの値が同じVSCを記憶部1002から読み出す。次に、制御部1001は、この受信したSetVSCコマンドに含まれるRotateの値とこの読み出したVSCに含まれるRotateの値とが一致するか否かを判定する。
そして、制御部1001は、この受信したSetVSCコマンドに含まれるRotateの値とこの読み出したVSCに含まれるRotateの値とが一致していないと判定した場合には、次のように判定し、ステップS7002に処理を進める。即ち、Rotateの値が変更されているとの判定である。
一方、制御部1001は、この受信したSetVSCコマンドに含まれるRotateの値とこの読み出したVSCに含まれるRotateの値とが一致していると判定した場合には、次のように判定し、ステップS7006に処理を進める。即ち、Rotateの値が変更されていないとの判定である。
ステップS7002では、制御部1001は、監視カメラ1000から動画や音声などがストリーミングされているか否かを判定する。
次に、制御部1001は、監視カメラ1000から動画や音声などがストリーミングされていると判定した場合には、まず、このストリーミングを停止させる。これは、続いて行われるVSCの設定変更処理に備えるためである。
そして、この停止の後、制御部1001は、ステップS7001で読み出されたVSCに含まれるRotateの値を、ステップS7001で用いられたSetVSCコマンドに含まれるRotateの値で更新する。
一方、制御部1001は、監視カメラ1000から動画や音声などがストリーミングされていないと判定した場合には、このストリーミングを停止させるための処理を行うことなく、次のような更新処理を行う。
すなわち、ステップS7001で読み出されたVSCに含まれるRotateの値を、S7001で用いられたSetVSCコマンドに含まれるRotateの値で更新する処理である。
ステップS7003では、制御部1001は、ステップS7001で用いられたSetVSCコマンドに含まれるTokenの値とTokenの値が同じVSCに関連付けられたMediaProfileが記憶部1002に記憶されているか否かを判定する。
そして、制御部1001は、このMediaProfileが記憶部1002に記憶されていると判定した場合には、ステップS7004に処理を進める。一方、制御部1001は、このMediaProfileが記憶部1002に記憶されていないと判定した場合には、ステップS7006に処理を進める。
ステップS7004では、記憶部1002に記憶されている解像度テーブルから、ステップS7001で用いられたSetVSCコマンドに含まれるRotateの値に対応付けられたエンコーダ解像度を読み出す。
例えば、本実施例では、ステップS7001で用いられたSetVSCコマンドに含まれるRotateの値が270度の場合には、制御部1001は、「WQVGA解像度」に対応するエンコーダ解像度として「240×400」を読み出す。また、この場合には、制御部1001は、「HD解像度」に対応するエンコーダ解像度として「720×1280」を読み出し、「FullHD解像度」に対応するエンコーダ解像度として「1080×1920」を読み出す。
ステップS7005では、制御部1001は、ステップS7001で読み出されたVSCに関連付けられた全てのMediaProfileに対して、これらMediaProfileのそれぞれに対応付けられたVECにエンコーダ更新処理を施す。より詳細には、制御部1001は、これらMediaProfileのそれぞれに対応付けられたVECの解像度を、ステップS7004で読み出されたエンコーダ解像度を用いて更新する。
例えば、ステップS7002において、ステップS7001で読み出されたVSCに含まれるRotateの値が「0度」から「270度」に更新された場合を想定する。このような想定の場合、制御部1001は、Resolutionの値が「400×240」のVECのResolutionの値を、「240×400」で更新する。
なお、この更新の後、制御部1001は、ステップS7002で停止させたストリーミングを再開させても良い。
ステップS7006では、制御部1001は、クライアント装置2000に対し、正常レスポンスを送信する。
続いて、図8は、GetVECOptionsコマンド受信処理を示すフローチャートである。この処理は、図6で示した6010のトランザクションにおいて、クライアント装置2000から送信されたGetVECOptionsコマンドを監視カメラ1000が受信した場合に、制御部1001により開始されるものである。
具体的には、制御部1001は、クライアント装置2000からGetVECOptionsコマンドを受信したか否かを判定する。そして、制御部1001は、GetVECOptionsコマンドを受信したと判定した場合には、図8に示す処理を開始する。一方、制御部1001は、クライアント装置2000からGetVECOptionsコマンドを受信していないと判定した場合には、図8に示す処理を開始しない。
図8におけるステップS7100では、制御部1001は、クライアント装置2000から受信したGetVECOptionsコマンドを用いて、監視カメラ1000の現在のVSCに含まれるRotateの値を記憶部1002から取得する(読み出す)。
例えば、この受信したGetVECOptionsコマンドにProfileTokenが含まれている場合を想定する。このような想定の場合には、制御部1001は、このProfileTokenの値とProfileTokenの値が同じMediaProfileを記憶部1002から読み出す。
一方、例えば、この受信したGetVECOptionsコマンドにVECのIDが含まれている場合を想定する。このような想定の場合には、制御部1001は、このVECのIDの値とIDの値が同じVECに関連付けられたMediaProfileを、記憶部1002から読み出す。
そして、制御部1001は、読み出したMediaProfileに関連付けられたVSCに含まれるRotateの値を、監視カメラ1000の現在のVSCに含まれるRotateの値として、記憶部1002から読み出す。
ステップS7101では、制御部1001は、記憶部1002に記憶されている解像度テーブルから、ステップS7100で取得されたRotateの値に対応付けられた全てのエンコーダ解像度を読み出す。
例えば、本実施例では、制御部1001は、ステップS7100で取得されたRotateの値が「90度」である場合には、この値に対応付けられた全てのエンコーダ解像度として、次のようなものを記憶部1002に記憶されている解像度テーブルから読み出す。即ち、「240×400」、「720×1280」及び「1080×1920」である。
ステップS7102では、制御部1001は、VECOptionsを作成し、作成したVECOptionsを記憶部1002に記憶させる。また、この記憶部1002に記憶させたVECOptionsは、選択肢として、ステップS7101で読み出されたエンコーダ解像度を含む。
なお、本実施例における制御部1001は、記憶部1002に情報を記憶させる記憶制御部としての役割を果たす。
ステップS7103では、制御部1001は、クライアント装置2000に対し、ステップS7102で作成されたVECOptionsを正常レスポンスとして送信する。
続いて、図9は、SetVECコマンド受信処理を示すフローチャートである。この処理は、図9で示した6013のトランザクションにおいて、クライアント装置2000から送信されたSetVECコマンドを監視カメラ1000が受信した場合に、制御部10001により開始されるものである。
具体的には、制御部1001は、クライアント装置2000からSetVECコマンドを受信したか否かを判定する。そして、制御部1001は、SetVECコマンドを受信したと判定した場合には、図9に示す処理を開始する。一方、制御部1001は、クライアント装置2000からSetVECコマンドを受信していないと判定した場合には、図9に示す処理を開始しない。
図9におけるステップS7200では、制御部1001は、クライアント装置2000から受信したSetVECコマンドを用いて、現在のRotateの値を記憶部1002から取得する(読み出す)。具体的には、まず、制御部1001は、この受信したSetVECコマンドに含まれるVECのIDの値とIDの値が同じVECに関連付けられたMediaProfileを記憶部1002から読み出す。
次に、制御部1001は、読み出したMediaProfileに含まれるTokenの値とTokenの値が同じVSCを記憶部1002から読み出す。そして、制御部1001は、読み出したVSCに含まれるRotateの値を現在のRotateの値として読み出す。
ステップS7201では、制御部1001は、ステップS7200で用いられたSetVECコマンドに含まれるエンコーダ解像度は、ステップS7200で読み出された現在のRotateの値で使用可能であるか否かを判定する。
具体的には、制御部1001は、記憶部1002に記憶されている解像度テーブルから、ステップS7200で読み出された現在のRotateの値に対応付けられた全てのエンコーダ解像度を読み出す。
次に、制御部1001は、読み出したエンコーダ解像度の中にステップS7200で用いられたSetVECコマンドに含まれるエンコーダ解像度が含まれる場合には、次のように判定する。
つまり、ステップS7200で用いられたSetVECコマンドに含まれるエンコーダ解像度は、ステップS7200で読み出された現在のRotateの値で使用可能であるとの判定である。そして、制御部1001は、この判定の後、ステップS7202に処理を進める。
一方、制御部1001は、読み出したエンコーダ解像度の中にステップS7200で用いられたSetVECコマンドに含まれるエンコーダ解像度が含まれない場合には、次のように判定する。
つまり、ステップS7200で用いられたSetVECコマンドに含まれるエンコーダ解像度は、ステップS7200で読み出された現在のRotateの値で使用可能ではないとの判定である。そして、制御部1001は、この判定の後、ステップS7210に処理を進める。
ステップS7202では、制御部1001は、ステップS7200で用いられたSetVECコマンドに応じて、記憶部1002に記憶されているVECの出力解像度を更新する。
具体的には、まず、制御部1001は、記憶部1002から、ステップS7200で用いられたSetVECコマンドに含まれるVECのIDの値とIDの値が同じVECを読み出す。次に、制御部1001は、読み出したVECの解像度を、ステップS7200で用いられたSetVECコマンドに含まれるエンコーダ解像度で更新する。
ステップS7203では、制御部1001は、クライアント装置に対し、正常レスポンスを送信する。
ステップS7210では、制御部1001は、クライアント装置に対し、エラーレスポンスを送信する。
続いて、図10は、クライアント装置2000における、配信画像設定画面の表示制御処理を示すフローチャートである。この配信画像設定画面は、監視カメラ1000のVSCおよびVECの設定を変更するために用いられる。ここで、図10で示す処理は、制御部2001により実行される。また、図11は、配信画像設定画面の表示例を説明するためのものであり、図11で示した画面は、表示部2003に表示されるものとする。
ステップS7300では、制御部2001は、配信画像設定画面8000のウインドウを表示部2003に表示させる。
ステップS7301では、制御部2001は、図6で示した6003のトランザクションを実施し、監視カメラ1000により保持されるMediaProfileのリストを取得する。そして、制御部2001は、取得したMediaProfileのリストを記憶部2002に記憶させる。
例えば、本実施例では、制御部2001は、図3で示された3つのMediaProfileのリストを監視カメラ1000から取得し、取得した3つのMediaProfileを記憶部2002に記憶させるものとする。
ステップS7302では、制御部2001は、図6で示した6004乃至6007のトランザクションを実施することで、図6で示したストリーミング6008を監視カメラ100から取得(受信)する。そして、制御部2001は、監視カメラ1000から受信したストリーミング6008に対応する動画(ライブ映像)を、Live Viewエリア8001に表示させる。
ステップS7303では、制御部2001は、ステップS7301で記憶させたMediaProfileに基づき、プロファイルタブを表示させる。
例えば、本実施例では、制御部2001は、ステップS7301で3つのMediaProfileを記憶させているので、図11に示すように、これら3つのMediaProfileにそれぞれ対応する3つのプロファイルタブを表示させることになる。
ステップS7304では、制御部2001は、ユーザにより現在選択されているプロファイルタブ8002に対応するVSCの内容をVSC設定エリア8003に表示させる。
具体的には、まず、制御部2001は、ユーザにより現在選択されているプロファイルタブに対応するMediaProfileを記憶部2002から読み出す。図11では、ユーザにより現在選択されているプロファイルタブ8002として、ProfileTokenの値が「Profile1」であるMediaProfile3000が表示されている。
次に、制御部2001は、読み出したMediaProfileに関連付けられたVSCを記憶部2002から読み出す。そして、制御部2001は、読み出したVSCの内容をVSC設定エリア8003に表示させる。
例えば、本実施例では、制御部2001は、読み出したVSCに含まれるRotateの値に対応する情報として「0 degrees」を、Rotate設定エリア8004に表示させる。この表示に併せ、制御部2001は、VSCの内容を更新させるためのVSC設定ボタン8005を表示部に表示させる。
ステップS7305では、制御部2001は、ユーザにより現在選択されているプロファイルタブに対応するVECの内容をVEC設定エリア8010に表示させる。
具体的には、まず、制御部2001は、ステップS7304と同様、ユーザにより現在選択されているプロファイルタブに対応するMediaProfileを記憶部2002から読み出す。次に、制御部2001は、読み出したMediaProfileに関連付けられたVECを記憶部2002から読み出す。そして、制御部2001は、読み出したVECの内容をVEC設定エリア8010に表示させる。
例えば、本実施例では、制御部2001は、読み出したVECに含まれるTypeの値「H.264」に対応するチェックボタンがチェックされた状態で、Type選択エリア8011を表示させる。また、本実施例では、制御部2001は、読み出したVECに含まれるResolutionの値に対応する情報として「420×240」を、Resolution設定エリア8012に表示させる。
この表示に併せ、制御部2001は、VECの内容を更新させるためのVEC設定ボタン8013、および図11で示された画面を閉じるための「閉じる」ボタン8020を表示させる。
ステップS7306では、制御部2001は、入力部2004からのユーザによる画面の操作通知、及び監視カメラ1000からのイベント通知を待つ。
そして、制御部2001は、プロファイルタブが押下されたことを示す操作通知を操作部2003から受信した場合、又は監視カメラ1000からの設定変更イベントを示す設定変更イベントを通信部2006から受信した場合に、ステップS7301に処理を戻す。これは、図11で示された画面を更新するためである。
また、制御部2001は、Rotate設定エリア8004のドロップダウンリストが押下されたことを示す操作通知を入力部2004から受信した場合には、ステップS7307に処理を進める。他に、制御部2001は、VSC設定ボタン8005が押下されたことを示す操作通知を入力部2004から受信した場合には、ステップS7308に処理を進める。
さらに、制御部2001は、Resolution設定エリア8012のドロップダウンリストが押下されたことを示す操作通知を入力部2004から受信した場合には、ステップS7309に処理を進める。また、制御部2001は、VEC設定ボタン8013が押下されたことを示す操作通知を入力部2004から受信した場合には、ステップS7310に処理を進める。
なおかつ、制御部2001は、「閉じる」ボタン8020が押下されたことを入力部2004から受信した場合には、ステップS7311に処理を進める。
ステップS7307では、制御部2001は、図6で示した6009のトランザクションを実行することによりGetVSCOptionsのレスポンスを受信し、図11で示されたRotate設定エリア8004のドロップダウンリストを表示させる。
具体的には、まず、制御部2001は、GetVSCOptionsコマンドをクライアント装置2000に送信する。次に、制御部2001は、GetVSCOptionsコマンドのレスポンスを監視カメラ1000から受信する。そして、制御部2001は、受信したレスポンスに含まれるRotateの選択肢を、Rotate設定エリア8004のドロップダウンリストとして表示させる。
ステップS7308では、制御部2001は、VSC設定エリア8003の内容を用いて、図6で示した6011のトランザクションを実行する。具体的には、制御部2001は、SetVSCコマンドを監視カメラ1000に送信させる。
ここで、このSetVSCコマンドのTokenの値は、ステップS7304で読み出されたVSCのTokenと同じ値である。また、このSetVSCコマンドのRotateの値は、Rotate設定エリア8004のドロップダウンリストで選択された値に対応する値である。
ステップS7309では、制御部2001は、図6で示した6010のトランザクションを実行することによりGetVECOptionsのレスポンスを受信し、図11で示されたRotate設定エリア8004のドロップダウンリストを表示させる。
具体的には、まず、制御部2001は、GetVECOptionsコマンドをクライアント装置2000に送信する。次に、制御部2001は、GetVECOptionsコマンドのレスポンスを監視カメラ1000から受信する。そして、制御部2001は、受信したレスポンスに含まれるResolutionの選択肢を、Resolution設定エリア8012の選択肢として表示させる。
ステップS7310では、制御部2001は、VEC設定エリア8010の内容を用いて、図6で示した6013のトランザクションを実行する。具体的には、制御部2001は、SetVECコマンドを監視カメラ1000に送信させる。
ここで、このSetVECコマンドのVECのIDの値は、ステップS7305で読み出されたVECのIDと同じ値である。また、このSetVECコマンドのResolutionの値は、Resolution設定エリア8012のドロップダウンリストで選択された値に対応する値である。
ここで、制御部2001は、次のような判定を行う。即ち、ステップS7304で読み出されたMediaProfileとは異なるMediaProfileであって、ステップS7305で読み出されたVECに関連付けられたMediaProfileが記憶部2002に記憶されているか否かの判定である。
そして、制御部2001は、このようなMediaProfileが記憶部2002に記憶されていないと判定した場合には、ステップS7306に処理を戻す。一方、制御部2001は、このようなMediaProfileが記憶部2002に記憶されていると判定した場合には、次のようなダイアログを表示部2003に表示させる。
つまり、VEC設定ボタン8013を押下することで、他のMediaProfileによる監視カメラ1000からのストリーミングに影響がある旨をユーザに通知するダイアログである。
ステップS7311では、制御部2001は、図11で示した画面を閉じ、図10で示した処理を終了する。
以上のように本実施例の監視カメラ1000は、撮像部1004から出力された撮像画像が回転させられた場合に、圧縮符号化部1006から出力される撮像画像の解像度をこの回転に応じて適切に更新することができる。
これにより、撮像部1004から圧縮符号化部1006に入力される撮像画像が回転させられても、この回転させられた撮像画像の解像度と別途設定されている圧縮符号化部1006から出力される撮像画像の解像度とに、不整合が発生することを防ぐことができる。
また、本実施例の監視カメラ1000は、撮像部1004から出力された撮像画像が回転させられた場合に、この回転に応じて適切な圧縮符号化部1006から出力される撮像画像の解像度の選択肢をクライアント装置2000に提供することができる。
これにより、撮像部1004から出力された撮像画像が回転させられることで、圧縮符号化部1006から出力される撮像画像の解像度の設定をクライアント装置2000が正しく行えなくなってしまう状況を未然防止することができる。
実施例1では、クライアント装置2000へ送信されるGetVECOptionsコマンドのレスポンスに含まれるResolutionの選択肢を、現在のRotateの設定値に応じて適切に変更する監視カメラ1000について説明した。
これに対し、本実施例の監視カメラ1000は、クライアント装置2000に対して、次のようなGetVECOptionsコマンドのレスポンスを送信するものである。即ち、VECに設定可能な全Resolutionの選択肢と、これらResolutionのそれぞれに対応付けられたRotateの設定値と、が含まれたレスポンスである。
なお、本実施例では、上述の実施例1と同一のものには同一の符号を付し、その説明を省略することがある。
続いて、図12は、本実施例における、記憶部1002に記憶されている解像度テーブルを示した図である。実施例1では、監視カメラ1000に設定可能なRotateの値は、「0度」、「90度」、「180度」および「270度」の90度毎の4種類のみであった。これに対し、実施例2の監視カメラ1000は、「0度」から「359度」まで1度単位で、Rotateの値を設定可能である。
図12に示す解像度テーブルには、Rotateの値の範囲が複数記憶されている。さらに、図12に示す解像度テーブルには、複数記憶されている範囲のそれぞれにエンコーダ解像度が対応付けられて記憶されている。
図12に示す解像度テーブルには、監視カメラ1000に対して指定することができる5種類のRotateの値の範囲として、「0〜44度」、「45〜134度」、「135〜224度」、「225〜314度」および「315〜359度」が記憶されている。
また、図12に示す解像度テーブルには、Rotateの値の範囲が「0〜44度」、「135〜224度」および「315〜359度」の場合に指定することができるVECのResolutionの選択肢として、次の値が記憶されている。即ち、「400×240」、「1280×720」および「1920×1080」である。
さらに、図12に示す解像度テーブルには、Rotateの値の範囲が「45〜134度」および「225〜314度」の場合に指定することができるVECのResolutionの選択肢として、次の値が記憶されている。即ち、「240×400」、「720×1280」および「1080×1920」である。
続いて、図13は、GetVECOptionsコマンド受信処理を示すフローチャートである。この処理は、図6で示した6010のトランザクションにおいて、クライアント装置2000から送信されたGetVECOptionsコマンドを監視カメラ1000が受信した場合に、制御部1001により開始されるものである。
具体的には、制御部1001は、クライアント装置2000からGetVECOptionsコマンドを受信したか否かを判定する。そして、制御部1001は、GetVECOptionsコマンドを受信したと判定した場合には、図13に示す処理を開始する。一方、制御部1001は、クライアント装置2000からGetVECOptionsコマンドを受信していないと判定した場合には、図13に示す処理を開始しない。
図13におけるステップS10000では、制御部1001は、記憶部1002に記憶されている解像度テーブルから、Rotateの値に関わらず、全てのエンコーダ解像度を読み出す。
例えば、本実施例では、制御部1001は、記憶部1002に記憶されている解像度テーブルから、全6種類のエンコーダ解像度を読み出す。ここで、全6種類のエンコーダ解像度とは、「400x240」、「1280x720」、「1920x1080」、「240x400」、「720x1280」、及び「1080x1920」である。
ステップS10001では、制御部1001は、図12で示した解像度テーブルに基づき、VECOptionsを作成して記憶部1002に記憶させる。具体的には、まず、制御部1001は、VECOptionsを作成して記憶部1002に記憶させる。そして、制御部1001は、ステップS10000で読み出された全てのエンコーダ解像度の中から1つのエンコーダ解像度を選択する。
次に、制御部1001は、次のような読出処理を実行する。即ち、制御部1001により選択された1つのエンコーダ解像度に対応付けて記憶された全てのRotateの値を、図12で示した解像度テーブルから読み出す処理である。
引き続き、制御部1001は、次のような記述処理を実行する。即ち、記憶部1002に記憶させたVECOptionsに、制御部1001により選択された1つのエンコーダ解像度とこの読出処理で読み出された全てのRotateの値とを対応付けて記述する処理である。
さらに、制御部1001は、次のような終了判定処理を実行する。具体的には、この終了判定処理では、まず、制御部1001は、ステップS10000で読み出された全てのエンコーダ解像度を選択したか否かを判定する。次に、制御部1001は、ステップS10000で読み出された全てのエンコーダ解像度を選択したと判定した場合には、ステップS10002に処理を進める。
一方、制御部1001は、ステップS10000で読み出された全てのエンコーダ解像度を選択していないと判定した場合には、ステップS10000で読み出された全てのエンコーダ解像度の中から新たなエンコーダ解像度を1つ選択する。次に、制御部1001は、この選択の後、再び、ステップS10001の読出処理、記述処理、および終了判定処理を実行する。
例えば、本実施例では、制御部1001は、記憶部1002に記憶させたVECOptionsに、エンコーダ解像度の値「400×240」と、Rotateの値「0〜44度」、「135〜224度」および「315〜359度」と、を対応付けて記述する。
ステップS10002では、制御部1001は、ステップS10001で記憶部1002に記憶させたVECOptionsを正常レスポンスとして、クライアント装置2000へ送信する。
続いて、図14は、クライアント装置2000における、配信画像設定画面の表示制御処理を示すフローチャートである。この配信画像設定画面は、監視カメラ1000のVSCおよびVECの設定を変更するために用いられる。ここで、図14で示す処理は、制御部2001により実行される。
図14におけるステップS7300乃至S7305は、図10におけるステップS7300乃至S7305と同様であるので、その説明を省略する。
ステップS10100では、制御部2001は、図6で示した6009のトランザクションを実行することで、監視カメラ1000のRotateの選択肢を取得(受信)する。
具体的には、まず、制御部2001は、GetVSCOptionsコマンドを監視カメラ1000に送信する。次に、制御部2001は、GetVSCOptionsコマンドのレスポンスを監視カメラ1000から受信する。
そして、制御部2001は、この受信したレスポンスに含まれるRotateの選択肢を記憶部2002に記憶させる。例えば、本実施例では、制御部2001は、「0〜44度」、「45〜134度」、「135〜224度」、「225〜314度」および「315〜359度」を、Rotateの選択肢として記憶部2002に記憶させる。
ステップS10101では、制御部2001は、図6で示した6010のトランザクションを実行することで、監視カメラ1000のResolutionの全ての選択肢を取得(受信)する。具体的には、まず、制御部2001は、GetVECOptionsコマンドを監視カメラ1000に送信する。次に、制御部2001は、GetVECOptionsコマンドのレスポンスを監視カメラ1000から受信する。
そして、制御部2001は、この受信したレスポンスを記憶部2002に記憶させる。
ステップS7306は、図10におけるステップS7306と同様であるので、その説明を省略する。
ステップS10102では、制御部2001は、ステップS10100で記憶部1002に記憶させたレスポンスに含まれるRotateの選択肢を、Rotate設定エリア8004のドロップダウンリストとして表示させる。
ステップS7308は、図10におけるステップS7308と同様であるので、その説明を省略する。
ステップS10103では、制御部2001は、ステップS10101で記憶部2002に記憶させたレスポンスに含まれるResolutionの選択肢を、Resolution設定エリア8012のドロップダウンリストとして表示する。
具体的には、まず、制御部2001は、ユーザにより現在選択されているプロファイルタブに対応するMediaProfileを記憶部2002から読み出す。次に、制御部2001は、読み出したMediaProfileに関連付けられたVSCのRotateの値を取得する。
そして、制御部2001は、ステップS10101で記憶させたレスポンスにて、取得したRotateの値に対応付けられて記述されたResolutionのみを読み出す。引き続いて、制御部2001は、読み出したResoultionを、Resolution設定エリア8012のドロップダウンリストに選択肢として表示する。
ステップS7310は、図10におけるステップS7310と同様であるので、その説明を省略する。また、ステップS7311は、図10におけるステップS7311と同様であるので、その説明を省略する。
続いて、図15は、本実施例における、監視カメラ1000のVSCおよびVECの設定を変更するために用いられる配信画像設定画面の他の表示例である。また、図16は、クライアント装置における、この配信画像設定画面の他の表示例の表示制御処理を示すフローチャートである。なお、図15で示した画面は、表示部2003に表示されるものとし、図16で示す処理は、制御部2001により実行されるものとする。
図16におけるステップS7300乃至S7303は、図10におけるステップS7300乃至S7303と同様であるので、その説明を省略する。
ステップS10100は、図14におけるステップS10100と同様であるので、その説明を省略する。また、ステップS10101は、図14におけるステップS10101と同様であるので、その説明を省略する。
ステップS11000では、制御部2001は、ステップS10100で記憶させたRotateの選択肢およびステップS10101で記憶させたレスポンスに基づき、Rotate解像度設定テーブル8102を表示させる。
このRotate解像度設定テーブル8102は、VSC/VEC設定エリア8100に表示されるものであり、監視カメラ1000に対して設定することができる、Rotateの値の範囲およびResolutionの値を一覧表に表示するものである。
具体的には、Rotate解像度設定テーブル8102には、監視カメラ1000に対して設定することができるRotateの値の範囲が複数表示される。また、Rotate解像度設定テーブル8102には、ステップS10101で記憶されたレスポンスにおいて、この複数表示されたRotateの値の範囲のそれぞれに対応付けて記述されたResolutionも表示される。
なお、この表示されたResolutionも監視カメラ1000に対して設定することができるものである。
ステップS11001では、制御部2001は、ユーザにより現在選択されているプロファイルタブに対応するVSCおよびVECの内容をVSC/VEC設定エリア8100に表示させる。
ここで、VSC/VEC設定エリア8100は、上述のRotate解像度設定テーブル8102を含む。また、このRotate解像度設定テーブル8102は、Rotateの値が入力されるRotate角度入力エリア8101と、および対応エンコーダ解像度選択エリア8103と、で構成される。
具体的には、制御部2001は、ユーザにより現在選択されているプロファイルタブに対応するMediaProfileを記憶部2002から読み出す。なお、図15では、ユーザにより現在選択されているプロファイルタブ8002として、ProfileTokenの値が「Profile1」であるMediaProfile3000の内容が表示されている。
次に、制御部2001は、読み出したMediaProfileに関連付けられたVSCを記憶部2002から読み出す。そして、制御部2001は、読み出したVSCに含まれるRotateの値を、Rotate角度入力エリア8101に表示する。
また、制御部2001は、読み出したMediaProfileに関連付けられたVECに含まれるResolutionの値を記憶部2002から読み出す。そして、制御部2001は、対応エンコーダ解像度選択エリア8103における選択肢のうち、読み出したResolutionの値に対応する項目をチェックして表示させる。
ステップS11002では、制御部2001は、対応エンコーダ解像度選択エリア8103における選択肢のうち、ステップS11001で読み出したRotateの値に対応しない項目を、グレーアウト処理(選択不可能に)する。
具体的には、制御部2001は、記憶部2002から、ステップS10101で受信したレスポンスにおいて、ステップS11001で読み出したRotateの値に対応付けられて記述されたResolutionの選択肢を読み出す。そして、制御部2001は、対応エンコーダ解像度選択エリア8103における選択肢のうち、読み出した選択肢に対応しない項目のみを選択不可能に表示する。
ステップS11003では、制御部2001は、入力部2004からのユーザによる画面の操作通知、及び監視カメラ1000からのイベント通知を待つ。
そして、制御部2001は、プロファイルタブが押下されたことを示す操作通知を入力部2004から受信した場合、又は監視カメラ1000からの設定変更イベントを示す設定変更イベントを通信部2006から受信した場合に、ステップS7301に処理を戻す。これは、図15で示された画面を更新するためである。
また、制御部2001は、Rotate角度入力エリア8101に値が入力されたことを示す操作通知を入力部2004から受信した場合、ステップS11004に処理を進める。さらに、VSC/VEC設定ボタン8104が押下されたことを示す操作通知を入力部2004から受信した場合には、ステップS11005に処理を進める。
なおかつ、制御部2001は、「閉じる」ボタン8020が押下されたことを入力部2004から受信した場合には、ステップS7311に処理を進める。
ステップS11004では、制御部2001は、Rotate角度入力エリア8101に入力された値に応じ、対応エンコーダ解像度選択エリア8103における選択肢をグレーアウト処理する。例えば、まず、制御部2001は、対応エンコーダ解像度選択エリア8103における選択肢の全てをグレーアウト処理する。
次に、制御部2001は、記憶部2002から、ステップS10101で受信したレスポンスにおいて、Rotate角度入力エリア8101に入力された値に対応付けられて記述されたResolutionの選択肢を読み出す。そして、制御部2001は、対応エンコーダ解像度選択エリア8103における選択肢のうち、読み出した選択肢に対応する項目のみを選択可能に表示する。
ステップS11005では、制御部2001は、VSC/VEC設定エリア8100に設定された内容を用いて、図6で示した6011のトランザクション、および図6で示した6013のトランザクションを実行する。具体的には、まず、制御部2001は、SetVSCコマンドを監視カメラ1000に送信する。このSetVSCコマンドのRotateの値は、Rotate角度入力エリア8101に入力された値に対応する。
次に、制御部2001は、SetVECコマンドを監視カメラ1000に送信する。このSetVECコマンドのResolutionの値は、対応エンコーダ解像度選択エリア8103における選択肢の中からユーザによって選択された項目に対応する。
以上のように本実施例の監視カメラ1000は、クライアント装置2000に対し、Resolutionの選択肢とこの選択肢のそれぞれの項目で使用可能なRotateの値とを送信することができる。
これにより、クライアント装置2000は、監視カメラ1000におけるVECのResolutionとVSCのRotateとを設定しても、両者の間に不整合が生じてしまうことを防止することができる。
さらに、本実施例におけるクライアント装置2000は、監視カメラ1000のVECのResolutionの選択肢とこの選択肢のそれぞれの項目で使用可能なRotateの値とをユーザに把握させることができる。
これにより、ユーザは、監視カメラ1000におけるVECのResolutionとVSCのRotateとを設定する際に、両者の間に不整合を生じさせてしまうことを未然防止することができる。
なお、上述の実施例では、単一のVSCを保持するように監視カメラ1000を構成しているが、これに限られるものではない。例えば、複数のVSCを保持するように監視カメラ1000を構成しても良い。
また、上述の実施例では、2つの異なる圧縮符号化方式(つまり、「H.264」および「JPEG」)に共通の解像度テーブルを保持するように監視カメラ1000を構成しているが、これに限られるものではない。
例えば、2つの異なる圧縮符号化方式毎に専用の解像度テーブル(つまり、「H.264」に専用の解像度テーブル、および「JPEG」に専用の解像度テーブル)を保持するように監視カメラ1000を構成しても良い。このように構成した場合、これらの解像度テーブルを、VECにおける現在の圧縮符号化設定に応じて適切に区別するように監視カメラ1000を構成しても良い。
なお、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
以上、本発明をその好適な実施例に基づいて詳述してきたが、本発明はこれら特定の実施例に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。