KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY
KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY 中定义的KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY属性 ID 用于从驱动程序获取每帧功能。 这是仅 GET 控件;驱动程序必须使任何 SET 调用失败。
使用情况摘要
若要使用驱动程序查询每帧设置功能, KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY 属性控件将连同数据缓冲区一起发送到驱动程序。 在 GET 调用中,驱动程序使用下面指定的格式布局在提供的数据缓冲区中填充每帧设置功能有效负载。
功能有效负载必须以功能标头开头。 每个功能项都必须以项标题开头。 如果功能项具有有效负载,则项标头必须后跟相应的项有效负载。
在 GET 调用中,首先将零长度缓冲区发送到驱动程序,以找出保存整个功能有效负载所需的数据缓冲区大小。 在响应调用时,驱动程序必须返回 STATUS_BUFFER_OVERFLOW 所需的功能缓冲区大小,该大小必须至少为 KSCAMERA_PERFRAMESETTING_CAP_HEADER。
以下是 在 KSCAMERA_PERFRAMESETTING_ITEM_TYPE 枚举中定义的项类型的上下文中 KSCAMERA_PERFRAMESETTING_CAP_HEADER 字段的说明。 有效负载字段表示 KSCAMERA_PERFRAMESETTING_CAP_ITEM_HEADER 结构之后的项有效负载结构。
曝光时间项
大小
这是 KSCAMERA_PERFRAMESETTING_CAP_HEADER 结构的大小 + KSPROPERTY_STEPPING_LONGLONG 结构的大小(如果支持手动模式)。
类型
这必须 KSCAMERA_PERFRAMESETTING_ITEM_EXPOSURE_TIME。
标志
这包含可用标志。 此字段必须包含通过对 ksmedia.h 中定义的标志执行按位 OR 提供的标志。
#define KSCAMERA_PERFRAMESETTING_AUTO 0x0000000100000000
#define KSCAMERA_PERFRAMESETTING_MANUAL 0x0000000200000000
有效负载
如果驱动程序支持手动模式,则必须在KSPROPERTY_STEPPING_LONGLONG中指定范围有效负载。Bounds.SignedMinimum\SignedMaxmum 和 KSPROPERTY_STEPPING_LONGLONG。SteppingDelta
闪存项
大小
这是 KSCAMERA_PERFRAMESETTING_CAP_HEADER 结构的大小。
类型
这必须 KSCAMERA_PERFRAMESETTING_ITEM_TYPE。KSCAMERA_PERFRAMESETTING_ITEM_FLASH
标志
这包含可用标志。 此字段必须包含通过对 ksmedia.h 中下面定义的 FLASH 标志执行按位 OR 提供的标志。
#define KSCAMERA_EXTENDEDPROP_FLASH_OFF 0x0000000000000000
#define KSCAMERA_EXTENDEDPROP_FLASH_ON 0x0000000000000001
#define KSCAMERA_EXTENDEDPROP_FLASH_ON_ADJUSTABLEPOWER 0x0000000000000002
#define KSCAMERA_EXTENDEDPROP_FLASH_AUTO 0x0000000000000004
#define KSCAMERA_EXTENDEDPROP_FLASH_AUTO_ADJUSTABLEPOWER 0x0000000000000008
#define KSCAMERA_EXTENDEDPROP_FLASH_REDEYEREDUCTION 0x0000000000000010
有效负载
闪存项没有有效负载。 如果在标志中指定了KSCAMERA_EXTENDEDPROP_FLASH_ON_ADJUSTABLEPOWER或KSCAMERA_EXTENDEDPROP_FLASH_AUTO_ADJUSTABLEPOWER,则 power 参数的范围为 0 到 100。
曝光补偿项
大小
这是 KSCAMERA_PERFRAMESETTING_CAP_HEADER 结构的大小 + KSPROPERTY_STEPPING_LONG 结构的大小(如果支持步骤)。
类型
这必须 KSCAMERA_PERFRAMESETTING_ITEM_TYPE。KSCAMERA_PERFRAMESETTING_ITEM_EXPOSURE_COMPENSATION
标志
这包含可用标志。 此字段必须包含可通过对 ksmedia.h 中下面定义的 EVCOMP 标志执行按位 OR 或ksmedia_phone.h 中定义的 AUTO 标志来获取的标志。
#define KSCAMERA_PERFRAMESETTING_AUTO 0x0000000100000000
#define KSCAMERA_EXTENDEDPROP_EVCOMP_SIXTHSTEP 0x0000000000000001
#define KSCAMERA_EXTENDEDPROP_EVCOMP_QUARTERSTEP 0x0000000000000002
#define KSCAMERA_EXTENDEDPROP_EVCOMP_THIRDSTEP 0x0000000000000004
#define KSCAMERA_EXTENDEDPROP_EVCOMP_HALFSTEP 0x0000000000000008
#define KSCAMERA_EXTENDEDPROP_EVCOMP_FULLSTEP 0x0000000000000010
有效负载
如果驱动程序仅支持自动模式,则不包括有效负载。 否则,必须在 KSPROPERTY_STEPPING_LONG 结构中指定范围有效负载。 EV 补偿的最小值和最大值是绝对 EV 补偿值,由 KSPROPERTY_STEPPING_LONG确定。Bounds.SignedMinimum 和 KSPROPERTY_STEPPING_LONG。Bounds.SignedMaximum。 EV 补偿的步骤由对应于浮点 (的最低 EVCOMP 步骤标志的步长决定,例如,KSCAMERA_EXTENDEDPROP_EVCOMP_SIXTHSTEP) 为 1/6。
ISO 速度项
大小
这是 KSCAMERA_PERFRAMESETTING_CAP_HEADER 结构的大小 + KSPROPERTY_STEPPING_LONG 结构的大小(如果支持手动模式)。
类型
这必须 KSCAMERA_PERFRAMESETTING_ITEM_TYPE。KSCAMERA_PERFRAMESETTING_ITEM_ISO
标志
此字段包含可用标志。 此字段必须包含通过对 ksmedia.h 和 ksmedia_phone.h 中定义的 ISO 标志执行按位 OR 提供的标志。 如果支持每帧 ISO,驱动程序必须至少支持以下功能之一,ISO_AUTO和ISO_MANUAL,其中ISO_AUTO是必需的。 如果播发ISO_MANUAL,驱动程序必须在KSPROPERTY_STEPPING_LONG中进一步播发支持的 ISO 速度 min\max\step 。 如果需要手动 ISO,则必须支持ISO_MANUAL。
#define KSCAMERA_EXTENDEDPROP_ISO_MANUAL 0x0080000000000000
#define KSCAMERA_EXTENDEDPROP_ISO_AUTO 0x0000000000000001
有效负载
如果驱动程序仅支持自动模式,则不包括有效负载。 否则,必须在 KSPROPERTY_STEPPING_LONG 结构中指定范围有效负载。 ISO 速度的最小值、最大值和步长取决于 KSPROPERTY_STEPPING_LONG。Bounds.UnsignedMinimum、KSPROPERTY_STEPPING_LONG。Bounds.UnsignedMaximum 和 KSPROPERTY_STEPPING_LONG。Bounds.SteppingDelta。 支持整数手动 ISO 的驱动程序应仅播发支持 ISO 速度范围 (最小/最大/步长) ISO_MANUAL。 每帧 ISO 不支持数字ISO_Xxx预设。
焦点项
大小
这是 KSCAMERA_PERFRAMESETTING_CAP_HEADER 结构的大小 + KSPROPERTY_STEPPING_LONG 结构的大小。
类型
这必须 KSCAMERA_PERFRAMESETTING_ITEM_TYPE。KSCAMERA_PERFRAMESETTING_ITEM_FOCUS。
标志
这包含可用标志。 必须通过对 ksmedis.h 中下面定义的标志执行按位 OR 来设置此字段。
#define KSCAMERA_PERFRAMESETTING_MANUAL 0x0000000200000000
有效负载
必须在KSPROPERTY_STEPPING_LONG结构中指定范围有效负载。 镜头位置的最小值、最大值和步长取决于KSPROPERTY_STEPPING_LONG。Bounds.UnsignedMinimum,KSPROPERTY_STEPPING_LONG。Bounds.UnsignedMaximum 和 KSPROPERTY_STEPPING_LONG。单步执行。 每帧设置焦点的行为及其与全局焦点设置的交互方式定义如下。
镜头位置粘性:但焦点命令不是。 如果在全局设置中选择了连续自动对焦 (CAF) ,则仅对指定帧覆盖 CAF 操作,并且 CAF 可能会移动镜头位置 (在提供手动对焦后进行完全扫描) 。
除非在 PFS 中使用手动设置显式重写,否则始终采用全局焦点设置。
全局 AF 是一次性的,并且仅在未指定手动替代的情况下应用于第一帧。
全局 CAF 适用于所有帧,除非由 PFS 显式重写。
在手动 PFS (镜头位置保持) 后,全局手动对焦设置不会还原。
确认图像类型
大小
这是 KSCAMERA_PERFRAMESETTING_CAP_HEADER 结构的大小。
类型
这必须 KSCAMERA_PERFRAMESETTING_ITEM_TYPE。KSCAMERA_PERFRAMESETTING_ITEM_PHOTOCONFIRMATION。
标志
不使用标志字段。
有效负载
此项没有有效负载。
自定义属性项
大小
这是 KSCAMERA_PERFRAMESETTING_CAP_HEADER 结构的大小 + GUID 的大小。
类型
这必须 KSCAMERA_PERFRAMESETTING_ITEM_TYPE。KSCAMERA_PERFRAMESETTING_ITEM_CUSTOM。
标志
不使用标志字段。
有效负载
这是自定义属性 GUID。
要求
标头 |
Ksmedia.h |