カメラコンパニオンアプリ
この記事では、カメラの設定やデフォルトの画像設定を調整できるカスタムアプリケーションを構築するための、カメラメーカー向けの拡張機能であるコンパニオンアプリについて説明します。
はじめに
Windows 11はカメラコンパニオンアプリフレームワークを提供し、メーカーは次の機能を持つアプリケーションを開発できます。
カメラ設定ページでサポートされているのと同じデフォルト値の設定 (輝度、コントラスト、背景効果など) を表示または変更できます。
Windowsで認識されているが、カメラ設定ページ (例えば、色相コントロール) を介して露出していない他のカメラコントロールのデフォルト値設定を登録、更新または削除する機能。
メーカー独自のカメラコントロールのデフォルト値設定を登録、更新、または削除する機能 (たとえば、カメラメーカーによるカスタム照明調整効果のオン/オフ制御)。
カメラが関連コンパニオンアプリを登録すると、カメラ設定ページにエントリが追加されます。 アプリがインストールされている場合は、カメラ設定ページから起動することができます。そうでなければ、Microsoft Storeへのリンクが表示され、ダウンロードできます。
コンパニオンアプリは、カメラ設定ページのようなデフォルト値を登録、更新、削除できるAPIに特別にアクセスできます。
用語と前提条件
用語 | 定義 |
---|---|
コンパニオン アプリ | カメラメーカーが開発したカスタムアプリケーションで、カメラ設定ページに加えてカメラの設定と管理も可能です。 |
現在値 | カメラのISPで現在アクティブで、カメラの一時メモリに保持されているカメラ制御の値。 |
規定値 | 特定のユーザーアカウントの特定のカメラ用にディスクに格納され、保存されるカメラ制御の初期値。 |
HSA | ハードウェアサポートアプリは、デバイスが接続されているときにMicrosoft Storeからハードウェア関連のアプリを自動的にダウンロードしてインストールするためにMicrosoftがサポートするフレームワークです。 |
NPU | ニューラルプロセッシングユニット、人工知能ワークロードを高いスループットと効率で処理するために設計された専用ハードウェア。 |
Windows Studio Effects | NPUを搭載した一部のWindows PCで使用可能なビデオ効果のコレクション。 |
UVC | USBビデオクラスは、USB接続カメラからの制御とストリーミングのための標準化されたインターフェイスです。 |
コンパニオンアプリの要件
コンパニオンアプリは、パッケージIDを持つパッケージ化されたアプリケーションである必要があります。 コンパニオンアプリはMicrosoft Storeでもリリースする必要があります。これにより、カメラの設定ページでお客様がアプリをインストールしていない場合は、インストールするように案内できます。
パッケージIDのない従来のデスクトップアプリケーションは、コンパニオンアプリとして使用できません。
HSAとしてのコンパニオンアプリ
コンパニオンアプリはハードウェアサポートアプリとして設定する必要もありませんが、非常にお勧めです。 HSAは、特定のハードウェアデバイスに関連付けられたMicrosoft Storeの特別なアプリです。 そのデバイスがPCに接続されている場合、HSAは使用可能なときにMicrosoft Storeから自動的にダウンロードおよびインストールされます。
コンパニオンアプリをカメラに関連付ける
カメラのメーカーは、特定のデバイスプロパティキーをコンパニオンアプリのパッケージファミリ名 (PFN) に入力することで、コンパニオンアプリを関連付けることができます。
名前 | Type | データ |
---|---|---|
SCSVCamPfn | REG_SZ | <PFN> |
コンパニオンアプリのPFNを識別するには、PowerShellからGet-AppxPackageを実行します。例:
Get-AppxPackage -名前CompanionAppName
コンパニオンアプリをカメラに関連付けるには、UVCカメラのMSOSディスクリプタまたはカメラドライバのINFのAddRegディレクティブを使用します。 たとえば、INFファイルを使用します。
[SocCaptureSim.RearCamera.AddReg]
HKR,,SCSVCamPfn,,%AppPFN%
...
[Strings]
AppPFN="Contoso.CameraCompanion_xxxxxxxx00000"
コンパニオンアプリがカメラに関連付けられている場合、カメラ設定ページにはカメラの特定設定ページの「関連設定」見出しの下にコンパニオンアプリへのリンクが含まれています。
コンパニオンアプリが既にインストールされている場合は、「{companion app name}を開く」リンクが表示されます。 クリックするとアプリが起動します。
コンパニオンアプリがまだインストールされていない場合は、Microsoft Storeを起動してアプリをダウンロードしてインストールするリンクが表示されます。
カメラには、1つのコンパニオンアプリしか関連付けることができません。
カメラ設定ページからコンパニオンアプリを起動する
カメラ設定ページでコンパニオンアプリを起動すると、カメラのシンボリックリンクがApplication.OnLaunched引数でコンテキストとして渡されます。
引数 | Type | データ |
---|---|---|
cameraId | String | シンボリックリンク |
この機能により、コンパニオンアプリは次のような状況で正しいカメラ設定を表示することができます。
1つのコンパニオンアプリは、1つのシステム上で複数のカメラをサポートします (例えば、OEM提供アプリケーションがタブレット上で前面および背面カメラをサポートします)。
お客様のシステムには、同じ(または同じブランドの)カメラが2台接続されており、それらは同じコンパニオンアプリによって管理されています。
コンパニオンアプリからカメラ設定ページを起動する
コンパニオンアプリは、ディープリンクURIを使用してWindowsカメラ設定ページを起動できます。 詳細については、「カメラ設定ページを起動する」を参照してください。
コンパニオンアプリからのデフォルト値の設定
コンパニオンアプリは、IMFCameraConfigurationManager APIを使用して、現在のユーザーのデフォルト値設定を設定できます。 このAPIを使用すると、コンパニオンアプリーは設定済みのデフォルト値 (たとえば、カメラ設定ページを使用してユーザーによって設定されたデフォルト値) を読み込み、デフォルト値を変更したり、新しいデフォルト値を登録したり、保存されているデフォルト値を削除したりできます。
デフォルト値は、KSプロパティGUIDと対応する値のペアとしてシステムのデータベースに登録されます。 これにより、アーキテクチャはKSプロパティの定義に依存しないようになります。 この柔軟性により、コンパニオンアプリは次のいずれかの設定のデフォルト値を設定、編集、または削除できます。
カメラ設定ページでも設定可能な設定 (明るさ、コントラスト、背景効果など)
Windowsで認識されているが、カメラ設定ページ (例えば、色相コントロール) を介して露出していない他のカメラコントロールの設定
メーカー独自のカメラコントロールの設定 (たとえば、カメラメーカーによるカスタム照明調整効果のオン/オフ制御)
コンパニオンアプリで輝度を設定する
カメラが撮影した画像の有効輝度を制御する方法はいくつかあります。 例えば、画像に簡単なゲインを加えることにより輝度を上げることができ、カメラの露光時間を長くすることにより輝度を上げることが可能です。
Windowsは、シンプルなゲインコントロールを考慮して設計されたレガシー輝度コントロール (KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS) をサポートしています。 また、Windowsでは、カメラの自動露出アルゴリズムに正または負の露出値バイアスを指令するように設計された露出補正制御 (KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION) もサポートしています。
カメラがどの明るさ調節を使用するかに関係なく、「中心」の時に明るさが中立であり、お客様が値を上げたり下げたりしてオフセットを適用できるようにカメラで具現しなければなりません。 最高の画質のためには、顧客がカメラ設定ページやコンパニオンアプリで明るさ調節を調整すれば、いつでも照明条件に関係なく露出に一定の正負バイアスを適用するようにカメラが露出補償制御を支援することが望ましいです。
詳細については、カメラが実装するカメラ設定ページの輝度コントロールの動作について、カメラ設定ページを参照してください。 コンパニオンアプリが輝度スライダも提供している場合は、カメラ設定ページの輝度スライダとコンパニオンアプリの同期を確実にするためにロジックを複製することが重要です。
以下にリンクされているコンパニオンアプリサンプルには、このロジックの参照実装が含まれています。
リアルタイムの電流値変化の監視
カメラ設定ページと同時にコンパニオンアプリが実行されている場合、コンパニオンアプリが共有モードで同時に実行されてプレビューを表示する間、カメラ設定ページを使用してデフォルト値を変更する可能性があります。 この場合、コンパニオンアプリは同期を維持できるようにコントロールのデフォルト値の変更を監視することが望ましい。
そのために、コンパニオンアプリはIMFCameraControlMonitorを使用して、関心のあるコントロールの現在価値 (KSプロパティ) の変更を監視できます。 これらの変更は、次の原因で発生する可能性があります。
カメラアプリケーション (Microsoft Teamsなど) がカメラを使用しており、コントロールの現在価値に変更します。
カメラ設定ページはカメラを使用しており、コントロールのデフォルト値 (現在価値も更新される) に変更します。
このAPIは、IMFCameraConfigurationManager APIを使用して対象制御のデフォルト値を再読み込み、デフォルト値が変更された場合にUIを更新するトリガーとして使用できます。
コンパニオンアプリのサンプル
サンプルコンパニオンアプリはGitHubで利用できます。CameraSettingsExternalSettingsAppサンプル。 次の例では、IMFCameraConfigurationManager API を使用してコントラスト、輝度、およびバックグラウンド セグメンテーションのデフォルト値を変更する方法を示します。
IMFCameraControlMonitor API を使用して対象コントロールの変更を監視する方法を示す別のサンプルアプリケーションは、GitHubで入手できます。ControlMonitorAppサンプル。
関連項目
CameraSettingsExternalSettingsAppサンプル
KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS