新しい高フレーム レート プロファイルをサポートする架空のカメラを使用します。 デバイスの制約をいくつか定義しましょう。
プレビューピンはピン 0 です。 カメラ ドライバーによって宣言されているKSFILTER_DESCRIPTORでは、KSPIN_DESCRIPTOR_EXの配列が定義されている場合、最初のKSPIN_DESCRIPTOR_EXはプレビュー ピンの記述子です。 同様に、ピン 1 はキャプチャ ピン、ピン 2 はフォト ピンです。
ハードウェアの制限により、問題のデバイスはフレーム レート 60 fps 以上でのスケーリングを処理できません。 そのため、プレビュー ストリームとキャプチャ ストリームの両方に同じ解像度が必要です。
同様に、デバイスは 60 fps 以上の色空間変換も処理できません。
カメラは、60 fps で 4K 16 x 9 ビデオをストリーミングできます。 カメラは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 を使用して、各プロファイルを Profiles キーの下のサブキーとして構成する必要があります。 プロファイル 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 宣言では使用できません。
プロファイル サブキーでの Constraint エントリの宣言は、プロファイル レベルの制約があることを示します。
[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))"