サンプル プロファイル宣言 (カメラ プロファイル V2)
新しい高フレーム レート プロファイルをサポートする仮想カメラを使用します。 デバイスの制約をいくつか定義しましょう。
プレビューピンはピン 0 です。 カメラ ドライバーによって宣言されるKSFILTER_DESCRIPTORでは、KSPIN_DESCRIPTOR_EXの配列が定義されている場合、最初のKSPIN_DESCRIPTOR_EXがプレビューピンの記述子になります。 同様に、ピン 1 はキャプチャ ピン、ピン 2 は写真ピンです。
ハードウェアの制限により、該当のデバイスは 60 fps 以上のフレーム レートでのスケーリングを処理できません。 したがって、プレビュー ストリームとキャプチャ ストリームの両方に同じ解像度が必要です。
同様に、デバイスは 60 fps 以上の色空間変換も処理できません。
カメラは 4K 16x9 ビデオを 60 fps でストリーミング可能です。 カメラは3840x2880@60fps (60 fps で 4:3 ビデオ)も可能です 。
カメラは60 fps で動作している場合、写真操作を提供することができません。
また、30 fps に制限されたビデオ録画プロファイルを宣言しますが、解像度の組み合わせ/サブタイプを許可する場合があります。
ビデオ録画プロファイルでは、写真シーケンスはサポートされていません(たとえば、単一の写真操作は機能します)。
INF ベースの宣言では、すべてのピン メディア タイプ フィルターにレジストリ エントリ名を割り当てる必要があります。 この名前は MTF# でなければならず、#は整数値を表します。
これらの制約を考えると、次のプロファイルを宣言できます。
[SampleDriver.CameraInterface.AddReg]
; Declare our schema version.
HKR,,"OEMCameraProfileVersion",0x00010001,2
;
; Declare our HighFrameRate profile with a lock resolution/subtype constraint.
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
;
; Declare our VideoRecording profile.
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
OEMCameraProfileVersion レジストリ エントリを 2 に設定することで、キャプチャ パイプラインに新しい制約ベースのプロファイル スキーマをサポートしていることを示します。
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
宣言したら、すべてのプロファイルをデバイス インターフェイス ノードのプロファイル レジストリ キーの下に保存する必要があります。
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
各プロファイルは、プロファイル ID を使用して、プロファイルキーの下のサブキーとして構成する必要があります。 プロファイル ID は、プロファイル タイプ、プロファイル インデックスで構成されます。
プロファイル タイプは、次の既知のプロファイル タイプのいずれか、または {GUID} 文字列です。
KSCAMERAPROFILE_HighQualityPhoto
KSCAMERAPROFILE_BalancedVideoAndPhoto
KSCAMERAPROFILE_VideoConferencing
KSCAMERAPROFILE_PhotoSequence
KSCAMERAPROFILE_FaceAuth_Mode
KSCAMERAPROFILE_HighFrameRate
KSCAMERAPROFILE_HDRWithWCGVideo
KSCAMERAPROFILE_HDRWithWCGPhoto
KSCAMERAPROFILE_VariablePhotoSequence
KSCAMERAPROFILE_VideoHDR8
プロファイル インデックスは、0xFFFFFFFFを除く任意の 32 ビット符号なし整数です。 0xFFFFFFFFのインデックス値は予約されており、IHV/OEM 宣言では使用してはなりません。
プロファイル サブキーでの制約エントリの宣言は、プロファイル レベルの制約があることを示します。
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
高フレーム レート プロファイルの場合、LRS;LST
はすべてのピンの解像度が同じである必要があり、サブタイプも同じである必要があることを示します(キャプチャ パイプラインからのスケーリングや色空間変換は許可されません)。
高フレーム レート プロファイルのプレビュー ピンでは、プレビュー ピンで使用可能な解像度/フレーム レートを許可します。 この仮想のデバイスでは、プレビュー ピンは 30 fps を超えることはありません。
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
キャプチャ ピンでは、60 fps 以上の任意の解像度と任意のフレーム レートを許可します。
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
写真ピンが使用できない場合:
[SampleDriver.CameraInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
高フレームレートプロファイルに加えて、標準的なビデオ録画プロファイルも提供しています。
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
この場合も、仮想カメラは、ビデオ録画と高フレーム レートの両方のシナリオで同時実行が保証されるメディアタイプのみで 30 fps プレビューのみを公開するため、プレビュー ピンに制約はありません。
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
ただし、キャプチャ ピンの場合、プレビューとキャプチャ、または写真操作の間で異なる解像度でより高いフレーム レートをサポートできないため、メディア タイプを 30 fps に制限する必要があります。
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
写真ピンの場合、このプロファイルでは写真シーケンスコントロールがブロックされていると宣言することで、写真シーケンスサポートがないことを宣言します。
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"