KS API プロファイル
KsInitializeDeviceProfile
デバイス プロファイルを発行するには、すべてのミニポート ドライバーがプロファイル ストアを初期化する必要があります。これを行うには、次の KS API を呼び出す必要があります。
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsInitializeDeviceProfile(
__in PKSFILTERFACTORY FilterFactory
);
FilterFactory (KSFILTERFACTORY)
これは、カメラのフィルター ファクトリを一意に識別するためにカメラ ドライバーによって作成された KSFILTERFACTORY です。
KSFILTERFACTORY に含まれるKSFILTER_DESCRIPTOR構造体の ReferenceGuid フィールドに、このフィルターの種類の一意の GUID を設定する必要があります。 また、KSFILTER_DESCRIPTORの [フラグ] フィールドには、KSFILTER_FLAG_PRIORITIZE_REFERENCEGUID フラグが設定されています。
指定された KSFILTERFACTORY にKSCATEGORY_VIDEO_CAMERAに関連付けられているデバイス インターフェイスが含まれていない場合、この API 呼び出しはSTATUS_INVALID_PARAMETERで失敗します。
この KSFILTERFACTORY のデバイス インターフェイスに関連付けられているプロファイル ストアからすべてのプロファイルを削除するには、ドライバーは KsInitializeDeviceProfile を呼び出し、その直後に KsPersistDeviceProfile を呼び出します。 これにより、空のプロファイル情報が生成され、プロファイル ストアからプロファイル情報が削除されます。
KsPublishDeviceProfile
この情報を公開するために、次の新しい KS API が導入されています。
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsPublishDeviceProfile(
__in PKSFILTERFACTORY FilterFactory,
__in PKSDEVICE_PROFILE_INFO Profile
);
この API は、カメラ ドライバーがサポートするプロファイルごとに繰り返し呼び出されます。 呼び出しごとに、コンカレンシーとデータ範囲の情報のセットが異なる場合があります。 KSCAMERA_PROFILE_INFOの ProfileId フィールドは一意である必要があります。 同じ ProfileId が使用され、プロファイル情報の内容が異なる場合、後続の呼び出しによって以前のプロファイル情報が上書きされます。
FilterFactory (KSFILTERFACTORY)
これは、KsInitializeDeviceProfile API で使用されるのと同じ FilterFactory です。
カメラ プロファイル情報は、KSCATEGORY_VIDEO_CAMERA インターフェイス カテゴリにのみ関連付けられます。 インターフェイス カテゴリが指定されていないフィルタファクトリがカメラプロファイルを登録しようとすると、このAPIはSTATUS_INVALID_PARAMETERを返します。
プロファイル (KSDEVICE_PROFILE_INFO)
KSDEVICE_PROFILE_INFOは、さまざまなデバイスの種類のプロファイル情報を処理するように設計された一般的な構造体です。
##define KSDEVICE_PROFILE_TYPE_CAMERA 0x00000001
typedef struct _KSDEVICE_PROFILE_INFO
{
UINT32 Type;
UINT32 Size;
union
{
struct
{
KSCAMERA_PROFILE_INFO Info;
UINT32 Reserved;
UINT32 ConcurrencyCount;
PKSCAMERA_PROFILE_CONCURRENCYINFO Concurrency;
} Camera;
// Add other device type specific "profiles" here.
};
} KSDEVICE_PROFILE_INFO, *PKSDEVICE_PROFILE_INFO;
タイプ
プロファイルの種類を定義します。 現在、定義されている型はKSDEVICE_PROFILE_TYPE_Cameraのみです。
サイズ
これは sizeof(KSDEVICE_PROFILE_INFO) 構造体に設定する必要があります。
Camera.Info
カメラのプロファイル情報を定義するKSCAMERA_PROFILE_INFOの構造。
Camera.Reserved
Unused. 0 に設定する必要があります。
Camera.ConcurrencyCount
コンカレンシー配列内のKSCAMERA_PROFILE_CONCURRENCYINFO構造体の数。 Windows のしきい値の場合、これは 1 以下である必要があります。
値 0 (Camera.Concurrency を NULL に設定) は、このプロファイルが非コンカレントであることを示します。
Camera.Concurrency
このプロファイルのコンカレンシーのサポートを記述するKSCAMERA_PROFILE_CONCURRENCYINFO構造体の配列。 Camera.CountOfConcurrency が 0 の場合、このパラメーターは NULL である必要があります。 Camera.CountOfConcurrency が >0 の場合、このパラメーターは NULL にすることはできません。
KSCAMERA_PROFILE_INFO
KSCAMERA_PROFILE_INFO構造体は、特定のプロファイルを一意に識別するために使用されます。
typedef struct _KSCAMERA_PROFILE_INFO
{
UINT32 ProfileId;
UINT32 Index;
UINT32 PinCount;
PKSCAMERA_PROFILE_PININFO Pins
} KSCAMERA_PROFILE_INFO, *PKSCAMERA_PROFILE_INFO;
ProfileId
プロファイルの一意の ID を表す GUID。 この GUID は、カスタム プロファイルを表す一意の IHV/OEM 作成 GUID であるか、セクション 3.1 で説明されている定義済みの GUID のいずれかである場合があります。
注: このフィールドは、KSCAMERAPROFILE_Legacyに設定しないでください。 レガシ プロファイルは、カメラ ドライバーによって公開することはできません。 レガシ プロファイル ID は、アプリケーションがプロファイルをサポートできることを示していない場合、キャプチャ エンジン/メディア キャプチャの初期化中にカメラ ドライバーに送信されます。 このような場合、カメラ ドライバーは、動作を Windows 8.1 モードの操作に戻し、対応するKSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_EXCLUSIVE_WITH_RECORDとKSPROPERTY_CAMERACONTROL_IMAGE_PIN_CAPABILITY_SEQUENCE_EXCLUSIVE_WITH_RECORD機能ビットと共に、縮小セット メディアの種類内で同時記録、写真、または記録/写真シーケンスをサポートできるかどうかを示す縮小メディアの種類のみを公開する必要があります。
インデックス
特定の ProfileId グループ内の各プロファイルには、一意の Index 値が必要です。 これにより、デバイスのすべてのプロファイルを ProfileId + Index で一意に識別できます。
PinCount
ピンが指すKSCAMERA_PROFILE_PININFO構造体の数。 この値は >0 である必要があります。
ピン
このプロファイルの各ピンでサポートされているメディアの種類を定義するKSCAMERA_PROFILE_PININFO構造の配列。
このフィールドは NULL にすることはできません。
コンカレンシー (KSCAMERA_PROFILE_CONCURRENCYINFO)
現時点では、アプリケーションは、試行が成功するか失敗するまで、複数のカメラからストリーム配信を試みることができるかどうかについての知識がありません。 Web ブログのシナリオの場合、これは、画像のビデオ要素で UI を描画する前に、アプリケーションが両方のストリームのアクティブ化を試みる必要があることを意味します。
Concurrency パラメーターは、特定のプロファイル (またはプロファイルのセット) を使用して、フロント カメラとバック カメラの両方を同時にアクティブ化できるようにするヒントをアプリケーションに提供します。 この知識により、アプリケーションは両方のストリームの UI 要素をアクティブ化する前に描画できます。
複数のアプリケーションでは、並行操作を保証するには並行処理だけでは不十分です。 コンカレンシー情報では、このシナリオの解決は試みられません。 代わりに、Windows 8 の既存のカメラ ヤンキング機能が利用されます。
Concurrency パラメーターは、KSCAMERA_PROFILE_CONCURRENCYINFO構造体の配列 (配列サイズは Camera.CountOfConcurrency パラメーターで指定) を表し、KSCAMERA_PROFILE_INFO構造体で識別されたプロファイルが異なるカメラで同時に実行されるプロファイルを示します。
Camera.CountOfConcurrency フィールドと Camera.Concurrency フィールドがそれぞれ 0 と NULL の場合、KSCAMERA_PROFILE_INFOによって定義されたプロファイルが同時実行プロファイルではないことが OS に示されます。
typedef struct _KSCAMERA_PROFILE_CONCURRENCYINFO
{
GUID ReferenceGuid;
UINT32 Reserved;
UINT32 ProfileCount;
PKSCAMERA_PROFILE_INFO Profiles;
} KSCAMERA_PROFILE_CONCURRENCYINFO,*PKSCAMERA_PROFILE_CONCURRENCYINFO;
ReferenceGuid
このプロファイルが同時に使用されている他のデバイスに対応するKSFILTER_DESCRIPTORの ReferenceGuid に設定する必要があります。
予約済み
Unused. 0 を指定する必要があります。
ProfileCount
Profiles 配列に含まれるプロファイル ID の数。 0 より大きい必要があります。
プロファイル
これは、ReferenceGuid で指定された他のカメラ デバイスで同時に使用できるKSCAMERA_PROFILE_INFOの配列です。
このフィールドは NULL にすることはできません。
ピン (KSCAMERA_PROFILE_PININFO)
各ピンで使用可能なメディアの種類の一覧を指定するには、KSCAMERA_PROFILE_PININFOの配列を指定する必要があります。配列のサイズは CountOfPins パラメーターで指定します。
typedef struct _KSCAMERA_PROFILE_PININFO
{
GUID PinCategory;
UINT32 Reserved;
UINT32 MediaInfoCount;
PKSCAMERA_PROFILE_MEDIAINFO MediaInfos;
} KSCAMERA_PROFILE_PININFO, *PKSCAMERA_PROFILE_PININFO;
PinCategory
これは、キャプチャ、プレビュー、または静止画像ピンに対応する PINNAME カテゴリです。 Windows しきい値の場合、サポートされているピン カテゴリは、PINNAME_VIDEO_CAPTURE、PINNAME_VIDEO_PREVIEW、PINNAME_VIDEO_STILLのみです。 その他のすべてのカテゴリでは、STATUS_INVALID_PARAMETER エラーが発生します。
予約済み
Unused. 0 を指定する必要があります。
MediaInfoCount
MediaInfos フィールドで指定KSCAMERA_PROFILE_MEDIAINFO構造体の配列サイズ。
MediaInfo
KSCAMERA_PROFILE_MEDIAINFO構造体の配列。
メディア情報 (KSCAMERA_PROFILE_MEDIAINFO)
各プロファイルに表示される関連メディアの種類の情報は、次のように記述されます。
##define KSCAMERAPROFILE_FLAGS_VIDEOHDR 0x0000000000000002
##define KSCAMERAPROFILE_FLAGS_VARIABLEPHOTOSEQUENCE 0x0000000000000010
typedef struct _KSCAMERA_PROFILE_MEDIAINFO
{
struct
{
UINT32 X;
UINT32 Y;
} Resolution;
struct
{
UINT32 Numerator;
UINT32 Denominator;
} MaxFrameRate;
ULONGLONG Flags;
UINT32 Data0;
UINT32 Data1;
UINT32 Data2;
UINT32 Data3;
} KSCAMERA_PROFILE_MEDIAINFO, *PKSCAMERA_PROFILE_MEDIAINFO;
解決
X (水平) と Y (垂直) のフレーム サイズ (ピクセル単位)。
MaxFrameRate
フレーム レートの num/denom 比率 (たとえば、30 / 1 = 30 fps)。 このフレーム レートは、理想的な照明条件下での指定された解像度の最大フレーム レートを表します。 実際のフレーム レートがこの値より小さい場合があります。
写真メディア情報の場合、指定された写真解像度のハードウェア制約のために写真シーケンスを有効にできない場合は、フレーム レートを 0 (num=0,denom=0) に設定する必要があります。 これにより、特定の写真メディアの種類が選択されると、ドライバーによってフォト シーケンス コントロールが拒否されることをアプリケーション レイヤーに通知します。
フラグの
次のフラグの 1 つ以上のビットごとの OR を指定できます。
KSCAMERAPROFILE_FLAGS_VIDEOHDR メディア情報にビデオ HDR フラグが設定されている場合、そのメディア設定に対して、ビデオ HDR がレコード ストリームに対して有効になっている可能性があります。
このフラグは、写真ピンのメディア情報には設定されない場合があります。
KSCAMERAPROFILE_FLAGS_VARIABLEPHOTOSEQUENCE メディア情報に可変フォト シーケンス フラグが設定されている場合、フォト メディア情報でフレーム レートが提供されない場合でも VPS サポートを利用できます。
このフラグが設定されている場合、フレーム レートが 0 以外の場合、そのフォト メディア情報に対して VPS とフォト シーケンスを使用できます。
このフラグが設定されている場合 & フレーム レートが 0 の場合、そのフォト メディア情報に対して VPS は使用できますが、フォト シーケンスは使用できません。
このフラグが設定されていない場合、フレーム レートが 0 以外の場合、そのフォト メディア情報に対して VPS は使用できませんが、フォト シーケンスは使用できます。
このフラグが設定されていない場合、フレーム レートが 0 の場合、そのメディア情報に対して VPS もフォト シーケンスも使用できません。
このフラグは、写真ピンのメディア情報にのみ設定できます。 このフラグが非フォト ピンメディア情報に存在すると、プロファイルセットは拒否されます。
Data0...3
フラグに基づいて決定される値。 現時点では使用されていません。0 に設定する必要があります。
KsPersistDeviceProfile
プロファイル情報を永続ストアにコミットするには、次の KS API を呼び出す必要があります。
__drv_maxIRQL(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsPersistDeviceProfile(
__in PKSFILTERFACTORY FilterFactory
);
FilterFactory (KSFILTERFACTORY)
これは、KsInitializeDeviceProfile でプロファイル ストアを初期化するために使用された KSFILTERFACTORY です。 KsInitializeDeviceProfile を使用してプロファイル ストアを初期化せずに KsPersistDeviceProfile が呼び出された場合、KsPersistDeviceProfile への呼び出しはSTATUS_INVALID_DEVICE_REQUESTで失敗します。
さらに、プロファイル情報が保持されているときにページ プールが使い果たされた場合、この API はSTATUS_INSUFFICIENT_RESOURCEで失敗する可能性もあります。
KSPROPERTY_CAMERACONTROL_EXTENDED_PROFILE
スコープ: バージョン 1
コントロール: フィルター
型: 非同期、取り消し不可
キャプチャ フレームワークが選択されたプロファイルをカメラ ドライバーに通知できるように、新しい拡張プロパティ コントロールが導入されました。
KSCAMERA_EXTENDEDPROP_HEADER
バージョン
拡張プロパティ コントロール バージョン 1 に対して定義されています。
PinId
KSCAMERA_EXTENDEDPROP_FILTERSCOPE (0xFFFFFFFF) である必要があります。
サイズ
sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_PROFILE)である必要があります。
結果
最後の SET 操作のエラー結果を示します。 SET 操作が実行されていない場合は、0 にする必要があります。 0 は、エラーが検出されなかった場合を示します。
能力
KSCAMERA_EXTENDEDPROP_CAPS_ASYNCCONTROLである必要があります。 他のモードはサポートされていません。
Flags
0 を指定する必要があります。
KSCAMERA_EXTENDEDPROP_PROFILE
KSPROPERTY_CAMERACONTROL_EXTENDED_PROFILE コントロールのペイロードには、KSCAMERA_EXTENDEDPROP_HEADER + KSCAMERA_EXTENDEDPROP_PROFILEが含まれています。
typedef struct _KSCAMERA_EXTENDEDPROP_PROFILE
{
GUID ProfileId;
UINT32 Index;
UINT32 Reserved;
} KSCAMERA_EXTENDEDPROP_PROFILE, *PKSCAMERA_EXTENDEDPROP_PROFILE;
ProfileId
選択したプロファイルを表す GUID。 これがKSCAMERAPROFILE_Legacy、プロファイルが選択されていない場合、カメラ ドライバーは縮小メディアの種類の設定を公開する必要があります。
このフィールドがGUID_NULLされている場合、プロファイルは選択されませんでしたが、アプリケーションはプロファイルに対応しているため、カメラ ドライバーはさまざまな種類のメディアを公開する必要があります。
インデックス
識別されたプロファイルに関連付けられているインデックス値。
予約済み
Unused. 0 を指定する必要があります。
INF プロファイル
OEM に柔軟性を提供するために、同じ参照ドライバーを使用するが、異なるセンサーやパフォーマンスレベルを持つさまざまな SKU に基づいてプロファイルを公開またはオーバーライドするには、次の INF セクションを使用します。
新規または既存の各プロファイルは、デバイス インターフェイス ノードの下に格納されているセミコロンで区切られた文字列に [ProfildId GUID, Index] 値が含まれている必要があります。
OEMCameraProfiles: REG_SZ:
KSCAMERAPROFILE_VideoRecording,0;KSCAMERAPROFILE_HighQualityPhoto,0;KSCAMERAPROFILE_BalancedVideoPhoto,0;KSCAMERAPROFILE_VideoConferencing,0;{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0
上記の例では、インデックス0番目のKSCAMERAPROFILE_VideoRecording、KSCAMERAPROFILE_HighQualityPhoto、KSCAMERAPROFILE_BalancedVideoPhoto、KSCAMERAPROFILE_VideoConferencing、およびIDが{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30}の新しいカスタムプロファイルをオーバーライドしています。
OEMCameraProfiles のプロファイル GUID ごとに、区切り文字列で指定された名前と一致する新しいサブキーをデバイス インターフェイス ノードに作成する必要があります。
このサブキーでは、次の値を追加することで、プロファイルが無効になっている (ドライバーによって公開された設定をオーバーライドする) 場合があります。
Disabled: REG_DWORD: 0x1
OEM が、単にプロファイルを無効にするのではなく、使用可能なメディアの種類を変更または公開する場合は、ストリームの PinCategory に一致する別のサブキーを作成する必要があります。
たとえば、0番目のインデックスのプレビューピンを公開するには、KSCAMERAPROFILE_VideoRecording を使用します。
<Device Interface Node>KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW
MediaCount: REG_DWORD: N
Media0: REG_SZ: <MediaInfo Format>
...
MediaN-1: REG_SZ: <MediaInfo Format>
MediaCount レジストリ値は、このピンに存在する MediaInfo の数を示します。 各 MediaInfo には、レジストリ エントリ名 "Media#" を指定する必要があります。\は N 個の数の 0 ベースのインデックス (Media0、Media1、Media2 ...、MediaN-1 など) を表します。
Media0 で指定された MediaInfo は、プロファイルの優先メディアの種類として扱われます。
上記の MediaInfo 形式は、次の構文を使用します。
MediaInfo Format = <ResolutionX>, <ResolutionY>, <MaxFrameRateNum>,<MaxFrameRateDenom>, Flags, Data0, Data1, Data2, Data3
そのため、次のようになります。
<Device Interface Node>KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW
MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media1: REG_SZ: 640,360,30,1,0,0,0,0,0
<Device Interface
Node>KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE
MediaCount: REG_DWORD: 3
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media1: REG_SZ: 1920,1080,30,1,0,0,0,0,0
Media2: REG_SZ: 640,360,30,1,0,0,0,0,0
IHV の設定から VideoRecording プロファイルを公開し、1080p、720p、360p の記録のみを許可します (720p で優先メディアの種類を作成した場合) 一方、写真のサポートなしで 720p および 360p プレビューのみを許可します。
カスタム プロファイルを定義するには、同じ構文を使用できますが、プロファイル名はカスタム プロファイルの GUID ID に置き換えられます。
<Device Interface
Node>{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0\PINNAME_VIDEO_PREVIEW
MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media1: REG_SZ: 640,360,30,1,0,0,0,0,0
<Device Interface
Node>{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0\PINNAME_VIDEO_CAPTURE
MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1280,720,30,1,0,0,0,0,0
Media2: REG_SZ: 640,360,30,1,0,0,0,0,0
<Device Interface
Node>{3074C75C-1D69-4A0A-895D-EB9EFDE1CF30},0\PINNAME_IMAGE
MediaCount: REG_DWORD: 2
Media0: REG_SZ: 1920,1080,0,0,0,0,0,0,0
Media1: REG_SZ: 1280,720,0,0,0,0,0,0,0
レジストリの変更は、OEM に適した任意の方法で処理できます。 推奨されるプロセスは、カメラ のインストール中にレジストリ エントリを作成できるように、カメラ ドライバーの INF ファイルに AddReg セクションを作成することです (ドライバーが削除されたときに削除されます)。
[SampleDriver.DeviceInterface.AddReg]
HKR,,"OEMCameraProfiles",0,"KSCAMERAPROFILE_VideoRecording,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",
…
INF プロファイル : 並行性
プロファイルのコンカレンシー設定を発行するには、次のレジストリ値を追加できます。
<Device Interface Node>KSCAMERAPROFILE_VideoConferencing,0
Concurrency: REG_SZ:
{ConcurrentDeviceReferenceGUID};{ProfileID},{Index};…
ConcurrentDeviceRefefenceGUID は、このプロファイルを同時に実行できるカメラに関連付けられているKSFILTER_DESCRIPTORの ReferenceGUID です。
INF の例
;---------------------------------------------------------------
; S t r i n g s
;---------------------------------------------------------------
[Strings]
; non-localizable
RefGUIDFrontCamera="{C3FDE193-01D1-4A78-AA0F-0D2395611C3D}"
RefGUIDRearCamera="{3E5169E8-8DB8-4951-A33F-CFF94F2C87BE}"
;---------------------------------------------------------------
; A d d R e g
;---------------------------------------------------------------
[SampleDriver.FrontCameraInterface.AddReg]
HKR,,"OEMCameraProfiles",0,"KSCAMERAPROFILE_VideoRecording;KSCAMERAPROFILE_VideoConferencing;KSCAMERAPROFILE_HighQualityPhoto;KSCAMERAPROFILE_PhotoSequence",
HKR,,"ReferenceGUID",0,%RefGUIDFrontCamera%
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoRecording,0\PINNAME_VIDEO_CAPTURE","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_PhotoSequence,0","Disabled",0x00010001,1,
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_IMAGE","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_IMAGE","Media0",0,"1920,1080,0,0,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_HighQualityPhoto,0\PINNAME_IMAGE","Media1",0,"1280,720,5,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_PREVIEW","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_PREVIEW","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_PREVIEW","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_CAPTURE","MediaCount",0x00010001,2,
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_CAPTURE","Media0",0,"1280,720,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0\PINNAME_VIDEO_CAPTURE","Media1",0,"640,360,30,1,0,0,0,0,0",
HKR,"KSCAMERAPROFILE_VideoConferencing,0","Concurrency",0,"%RefGUIDRearCamera%;KSCAMERAPROFILE_VideoConferencing,0",
上の INF のサンプル セクションでは、OEM がプロファイルの既定の IHV 設定を発行 (またはオーバーライド) する方法を示します。 上記のサンプルでは、フロント カメラの 0 番目のインデックス付き VideoRecording は、プレビューと録画の両方で 720p30 のみに制限されており、写真はサポートされていません。
フロント カメラの PhotoSequence も無効になっています (IHV の公開プロファイルをオーバーライドします)。
HighQualityPhoto プロファイルは、1080p のシングル ショットまたは 5 fps の 720p 写真で 720p プレビューに制限されています。
VideoConferencing プロファイルは、プレビューとキャプチャの両方で 720p30 に制限され、リア カメラの VideoConferencing プロファイルと同時に実行できることを示します (背面カメラの VideoConferencing プロファイルは INF に表示されません。INF で指定されていない場合は、背面カメラの VideoConferencing プロファイルで IHV が公開されているもの、または存在しない場合は使用されます。 上記のオーバーライドが無効であるため、プロファイルは無効です)。
INF と KS API プロファイル
INF プロファイル情報は、常に KS API によって発行されたプロファイル情報よりも優先されます。 優先順位はプロファイルごとのレベルです。
ドライバーが KS API を使用して VideoRecording、HighQualityPhoto、VideoConferencing プロファイルを発行し、INF 設定に HighQualityPhoto のプロファイル エントリが含まれている場合、ドライバーによって発行された HighQualityPhoto プロファイルのみが INF からのプロファイル情報で上書きされます。
これは、単一の参照ドライバー (IHV によって実装) が特定のセンサーで使用可能なプロファイルのセットを公開する可能性があることを想定して行われますが、OEM は別のセンサーを選択するか、最終的なフォーム ファクターのために、使用可能なプロファイルの変更/制限を選択する可能性があります。
INF プロファイルを使用すると、OEM はドライバー バイナリを変更せずに、INF を更新するだけで既存の Windows 8.1 ドライバーのプロファイルを発行することもできます。