Qcam Orbit AFはkakaku.comによると2010年5月発売とのことですが、Pan・Tilt・Zoom・Focusが制御できる優れもの、遅ればせながらこれを意のままに制御してみたくなり、早速方法をググッて見ると、何やら面倒な感じでしたので、何とか手順を整理しました。
1)環境の準備:DirectShowを使うため、Windows SDKをインストール
2)Qcam Orbit AFのサンプル制御ソフトの入手:Logicoolのサイトからゲット
3)制御ソフトの作成:2)のサンプルから必要な箇所を抜粋(平たく言うとコピペ)
-----------------------------------------------------------------------------------------------------
1)環境の準備
Windows SDKをインストールします。私の環境はWindosw Vista(64bit版)+VS2008です。
Windows SDKのページ
http://msdn.microsoft.com/ja-jp/windows/bb980924.aspx
ダウンロードページ
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279
SDKのインストールで.NET.Framework4のインストールを先にする様に言われたら
http://msdn.microsoft.com/en-us/netframework/aa569263.aspx
ダイアログに書いてあるダウンロード先は↑へ飛びます。
全てインストールが終わるまで、結構時間が掛かりました。
2)Qcam Orbit AFのサンプル制御ソフトの入手
以下のホームページの一番下のPTZ sampleをクリック!
http://www.quickcamteam.net/documentation/how-to/how-to-control-pan-tilt-zoom-on-logitech-cameras
3)制御アプリの作成
さていよいよ自作アプリの作成ですが、取り合えずプロジェクトにはSDKのLibフォルダにあるstrmiids.libをリンクする様に設定します。そうしないとビルドした際に、「シンボル”__IID_IAMCameraControl”が未解決です。」などいくつかのリンクエラーが発生してしまいます。QcamフォーラムのQAにも同様の記載がありました。最初は皆同じ失敗をするものですね。
http://forums.quickcamteam.net/showthread.php?tid=1397
取り合えず、コピペも上手く行き、ビルドも完了、動作も初期値の取得に成功しました。
続いて、設定動作の確認ですが、IAMCameraControl::Set()の第3引数Flagsが少々曲者の様です。 MSDNのページhttp://msdn.microsoft.com/ja-jp/library/cc352339.aspxでは、
typedef enum{
CameraControl_Flags_Auto = 0x0001,
CameraControl_Flags_Manual = 0x0002
} CameraControlFlags;
とありますが、この他にAbsoluteとRelative設定があります。KsMedia.h のLine5008 - 5012に以下の様に定義されているので、サンプルPTZにある通り、Ks.hとKsMedia.hをインクルードし、Relativeも設定しましょう。
#define KSPROPERTY_CAMERACONTROL_FLAGS_AUTO 0X0001L
#define KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL 0X0002L
#define KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE 0X0000L
#define KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE 0X0010L
ここまでの内容で、Pan/Tiltの指定角度動作ができました。