KSPROPERTY_CAMERACONTROL_EXTENDED_OPTIMIZATIONHINT (拡張されたハードウェア最適化)
KSPROPERTY_CAMERACONTROL_EXTENDED_OPTIMIZATIONHINT は、写真キャプチャとビデオ キャプチャの主なユース ケースを制御するために使用されます。 Windows 10 では、このコントロールは拡張されたハードウェア最適化ヒントをサポートするように拡張されています。
用法の要点
範囲 | コントロール | Type |
---|---|---|
Version 1 | Assert | 同期 |
KSCAMERA_EXTENDEDPROP_HEADER.Flags フィールドに以下のフラグを配置することにより、ドライバーのハードウェア最適化ヒントを表示できます。
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_DEFAULT 0x0000000000000000
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO 0x0000000000000001
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_VIDEO 0x0000000000000002
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_QUALITY 0x0000000000000004
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_LATENCY 0x0000000000000008
#define KSCAMERA_EXTENDEDPROP_OPTIMIZATION_POWER 0x0000000000000010
PHOTO ヒントと VIDEO ヒントは引き続き、主なユース ケースを指定するために使用されます。
Windows 10 の場合、追加のビット フラグは、ドライバーの品質、速度、および電力消費量のトレードオフを支援します。 既定では、ドライバーには KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO が必要です。
ドライバーがこのコントロールをサポートしている場合は、KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO と KSCAMERA_EXTENDEDPROP_OPTIMIZATION_VIDEO をサポートする必要があります。
ドライバーが最適化ヒントをサポートしていない場合、ドライバーはこのコントロールを実装しないでください。
以下の表では、フラグの機能について説明します。
フラグ | 説明 |
---|---|
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_DEFAULT | これは必須の機能です。 指定すると、ドライバーは、以前にドライバーに設定されているヒントをクリアし、ドライバーの既定の電源、品質、待機時間のトレードオフを適用する必要があります。 |
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_PHOTO | これは必須の機能です。 指定した場合、主なユース ケースは写真キャプチャであり、ドライバーはビデオ録画よりも写真キャプチャに優先順位を付ける必要があります。 このフラグは、プレビュー ピンが停止状態の場合に指定して、写真品質を優先してセンサー モードを選択するか、ビデオ録画中にのみ写真キャプチャの実行中の状態で指定できます。 ビデオ録画中に写真キャプチャ用に指定した場合、ビデオ ストリームのグリッチは、より良い写真品質を優先して許容されます。 このフラグは VIDEO フラグと相互に排他的であり、QUALITY、LATENCY、POWER フラグのいずれか 1 つまたは 2 つで使用できます。 |
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_VIDEO | これは必須の機能です。 指定した場合、主なユース ケースはビデオ キャプチャであり、ドライバーは写真キャプチャよりもビデオ録画に優先順位を付ける必要があります。 このフラグは、プレビュー ピンが停止状態の場合に指定して、ビデオ録画を優先してセンサー モードを選択するか、ビデオ録画中にのみ写真キャプチャの実行中の状態で指定できます。 ビデオ録画中に写真のキャプチャに指定した場合、ビデオ ストリームのグリッチは許可されません。 このフラグは PHOTO フラグと相互に排他的であり、QUALITY、LATENCY、POWER フラグのいずれか 1 つまたは 2 つで使用できます。 |
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_QUALITY | この機能は任意です。 指定された場合、ドライバーは、写真キャプチャの画質とビデオ録画のビデオ品質を最適化する必要があります。 このフラグは、写真キャプチャ (履歴フレームのない通常の写真、VPS、PS を含む) やビデオ録画が開始される前、またはピンが停止状態になったときに指定できます。 このフラグは PHOTO フラグ、または VIDEO フラグと共に LATENCY フラグまたは POWER フラグと共に使用できます。 |
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_LATENCY | この機能は任意です。 指定した場合、ドライバーは、写真キャプチャとビデオ録画の速度と待機時間を最適化する必要があります。 このフラグは、写真キャプチャ (履歴フレームのない通常の写真、VPS、PS を含む) やビデオ録画が開始される前、またはピンが停止状態になったときに指定できます。 このフラグは PHOTO フラグ、または VIDEO フラグと共に QUALITY フラグまたは POWER フラグと共に使用できます。 |
KSCAMERA_EXTENDEDPROP_OPTIMIZATION_POWER | この機能は任意です。 指定した場合、ドライバーは、写真キャプチャとビデオ録画の電力消費を最適化する必要があります。 このフラグは、写真キャプチャ (履歴のない通常の写真、VPS、PS を含む) やビデオ録画が開始される前、またはピンが停止状態になったときに指定できます。 このフラグは、VIDEO フラグと共に QUALITY フラグまたは LATENCY フラグと共に使用できます。 |
次の表は、KSCAMERA_EXTENDEDPROP_HEADER 構造体フィールドについて、このコントロールを使用する場合の説明と要件を示します。
メンバー | 値 |
---|---|
バージョン | 1 |
PinId | KSCAMERA_EXTENDEDPROP_FILTERSCOPE (0xFFFFFFFF) |
サイズ | sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_VALUE) |
結果 | 最後の SET 操作のエラー結果を示します。 SET 操作が実行されていない場合は、0 にする必要があります。 |
機能 | 上記で定義されているように、サポートされている KSCAMERA_EXTENDEDPROP_OPTIMIZATION_* フラグのビット論理和にする必要があります。 |
Flags | これは読み取り/書き込みフィールドです。 これは、上記で定義したサポートされている KSCAMERA_EXTENDEDPROP_OPTIMIZATION_* フラグの任意の有効な組み合わせにすることができます。 |
解説
最適化ヒントを使用する場合は、次の点に注意してください。
QUALITY/LATENCY/POWER と PHOTO/VIDEO は、独立したヒントの 2 つのセットです。 これらは同時に指定することも、異なる時刻に個別に指定することもできます。 QUALITY/LATENCY/POWER を設定しても PHOTO/VIDEO は上書きされません。その逆も同様です。 異なる時刻に指定した場合、ドライバーは GET 呼び出しで両方のヒント セットの現在の設定を返す必要があります。
QUALITY/LATENCY/POWER の場合、ヒントが設定されている場合、ドライバーは制約内で最適化する必要があります。 最適化が使用できない場合、ドライバーはヒントを無視する必要があります。
ビデオ ユース ケースに対して 2 つのヒントが同時に指定されている場合、各ヒントの最適化は、1 つのヒントのみが指定されている場合よりも小さい場合があります。 具体的には次のとおりです。
QUALITY または POWER も指定されている場合、LATENCY は QUALITY または POWER よりも優先されます。 このような場合、品質は QUALITY のみを指定した場合よりも低下し、電力消費量は POWER のみを指定した場合よりも増える可能性があります。
QUALITY と POWER の両方が指定されている場合、品質が QUALITY のみを指定した場合よりも低下する場合があり、電力消費量が POWER のみを指定した場合よりも増える可能性があります。
最適化ヒントは、アプリケーションで指定されたキャプチャ シナリオの制約内で、3A での処理のトレードオフ、ISP 処理、センサーの選択などを容易にするために、ドライバーへのヒントとしてのみ提供されます。 アプリ開発者は、最適な結果を得るために、特定のキャプチャ シナリオに最適なコントロールと API を選択して構成することが重要です。 そうしないと、最適化ヒントだけでは効果が低下する可能性があります。 たとえば、高品質の写真キャプチャでは、品質ヒントを利用するために、特定の IHV プラットフォームで PS の代わりに VPS または LowLagPhoto/TakePhoto を使用する必要があります。 同様に、待機時間の短縮や消費電力が必要な場合は、Video Stabilization を無効にする必要があります。
各機能フラグで指定されているもの以外の時刻/状態で受け取った場合、最適化ヒントは無視されます。
Video Stabilization コントロールがドライバー (ON または AUTO) でも有効になっている場合。
LATENCY または POWER ヒントが設定されている場合、ドライバーは、処理の遅延または電力消費を減らすために、低レイテンシーまたは低電力 Video Stabilization アルゴリズムを含む最も穏やかな Video Stabilization を適用できます。 Video Stabilization が AUTO に設定されている場合、ドライバーは Video Stabilization をオフにして、待機時間や電力消費量をさらに減らすことができます。
品質ヒントが設定されている場合、ドライバーはビデオ品質を向上させるために最も強力な Video Stabilization を適用できます。
要件
Header: Ksmedia.h (Ksmedia.h を含む)