KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY
The KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY property ID that is defined in KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY is used to get the per-frame capabilities from the driver. This is a GET only control; the driver must fail any SET calls.
Usage summary
To query per frame setting capability with the driver, the KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY property control is sent to the driver along with a data buffer. In a GET call, the driver fills the per frame setting capability payload in the data buffer provided using the format layout specified below.
Capability header (KSCAMERA_PERFRAMESETTING_CAP_HEADER)
Item header (KSCAMERA_PERFRAMESETTING_CAP_ITEM_HEADER)
Item header (KSCAMERA_PERFRAMESETTING_CAP_ITEM_HEADER)
Item payload (KSPROPERTY_STEPPING_LONG or KSPROPERTY_STEPPING_LONGLONG)
The capability payload must start with a capability header. Each capability item must start with an item header. If a capability item has a payload, the item header must be followed by a corresponding item payload.
In a GET call, a zero length buffer is sent to the driver first to find out the required data buffer size to hold the entire capability payload. In response to the call, the driver must return STATUS_BUFFER_OVERFLOW with the required capability buffer size that must be at least the size of KSCAMERA_PERFRAMESETTING_CAP_HEADER.
The following are the descriptions of the KSCAMERA_PERFRAMESETTING_CAP_HEADER fields in context of the item types defined in the KSCAMERA_PERFRAMESETTING_ITEM_TYPE enumeration. The payload field represents the item payload structures after the KSCAMERA_PERFRAMESETTING_CAP_ITEM_HEADER structure.
Exposure time item
Size
This is the size of the KSCAMERA_PERFRAMESETTING_CAP_HEADER structure + the size of a KSPROPERTY_STEPPING_LONGLONG structure if manual mode is supported.
Type
This must be KSCAMERA_PERFRAMESETTING_ITEM_EXPOSURE_TIME.
Flags
This contains the available flags. This field must contain the flags available by doing a bit-wise OR of the flags defined in ksmedia.h.
#define KSCAMERA_PERFRAMESETTING_AUTO 0x0000000100000000
#define KSCAMERA_PERFRAMESETTING_MANUAL 0x0000000200000000
Payload
If the driver supports manual mode, a range payload must be specified in KSPROPERTY_STEPPING_LONGLONG.Bounds.SignedMinimum\SignedMaxmum and KSPROPERTY_STEPPING_LONGLONG.SteppingDelta
Flash item
Size
This is the size of the KSCAMERA_PERFRAMESETTING_CAP_HEADER structure.
Type
This must be KSCAMERA_PERFRAMESETTING_ITEM_TYPE.KSCAMERA_PERFRAMESETTING_ITEM_FLASH
Flags
This contains the available flags. This field must contain the flags available by doing a bit-wise OR of the FLASH flags defined below in ksmedia.h.
#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
Payload
The flash item does not have a payload. If KSCAMERA_EXTENDEDPROP_FLASH_ON_ADJUSTABLEPOWER or KSCAMERA_EXTENDEDPROP_FLASH_AUTO_ADJUSTABLEPOWER is specified in the flags, the power parameter is in the range from 0 to 100.
Exposure compensation item
Size
This is the size of the KSCAMERA_PERFRAMESETTING_CAP_HEADER structure + the size of a KSPROPERTY_STEPPING_LONG structure if steps are supported.
Type
This must be KSCAMERA_PERFRAMESETTING_ITEM_TYPE.KSCAMERA_PERFRAMESETTING_ITEM_EXPOSURE_COMPENSATION
Flags
This contains the available flags. This field must contain the flags available by doing a bit-wise OR of the EVCOMP flags defined below in ksmedia.h or the AUTO flag defined below in ksmedia_phone.h.
#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
Payload
If a driver supports only auto mode, a payload is not included. Otherwise, a range payload must be specified in a KSPROPERTY_STEPPING_LONG structure. The min and max of EV compensation are absolute EV compensation values and are determined from KSPROPERTY_STEPPING_LONG.Bounds.SignedMinimum and KSPROPERTY_STEPPING_LONG.Bounds.SignedMaximum. The step of EV compensation is determined by the step size of the lowest EVCOMP step flag that corresponds to a float (for example, 1/6 for KSCAMERA_EXTENDEDPROP_EVCOMP_SIXTHSTEP).
ISO speed item
Size
This is the size of the KSCAMERA_PERFRAMESETTING_CAP_HEADER structure + the size of a KSPROPERTY_STEPPING_LONG structure if manual mode is supported.
Type
This must be KSCAMERA_PERFRAMESETTING_ITEM_TYPE.KSCAMERA_PERFRAMESETTING_ITEM_ISO
Flags
This field contains the available flags. This field must contain the flags available by doing a bit-wise OR of the ISO flags defined below in ksmedia.h and ksmedia_phone.h. If per-frame ISO is supported, the driver must support at least one of the following capabilities, ISO_AUTO and ISO_MANUAL, in which ISO_AUTO is mandatory. If ISO_MANUAL is advertised, the driver must further advertise the supported ISO speed min\max\step in KSPROPERTY_STEPPING_LONG.ISO_MANUAL must be supported if manual ISO is desired.
#define KSCAMERA_EXTENDEDPROP_ISO_MANUAL 0x0080000000000000
#define KSCAMERA_EXTENDEDPROP_ISO_AUTO 0x0000000000000001
Payload
If a driver supports only auto mode, a payload is not included. Otherwise, a range payload must be specified in a KSPROPERTY_STEPPING_LONG structure. The min, max, and step of ISO speeds are determined from KSPROPERTY_STEPPING_LONG.Bounds.UnsignedMinimum, KSPROPERTY_STEPPING_LONG.Bounds.UnsignedMaximum, and KSPROPERTY_STEPPING_LONG.Bounds.SteppingDelta. Drivers supporting integer manual ISO should only advertise ISO_MANUAL with supported ISO speed ranges (min/max/step). Numeric ISO_Xxx presets are not supported for per-frame ISO.
Focus item
Size
This is the size of the KSCAMERA_PERFRAMESETTING_CAP_HEADER structure + the size of a KSPROPERTY_STEPPING_LONG structure.
Type
This must be KSCAMERA_PERFRAMESETTING_ITEM_TYPE.KSCAMERA_PERFRAMESETTING_ITEM_FOCUS.
Flags
This contains the available flags. This field must be set by doing a bit-wise OR of the flag defined below in ksmedis.h.
#define KSCAMERA_PERFRAMESETTING_MANUAL 0x0000000200000000
Payload
A range payload must be specified in a KSPROPERTY_STEPPING_LONG structure. The min, max, and step of lens position are determined from KSPROPERTY_STEPPING_LONG.Bounds.UnsignedMinimum, KSPROPERTY_STEPPING_LONG.Bounds.UnsignedMaximum, and KSPROPERTY_STEPPING_LONG.SteppingDelta. The behavior of per-frame setting focus and how it interworks with global focus settings is defined as follows.
Lens position is sticky; but focus commands are not. If continuous auto focus (CAF) has been selected in the global settings, the CAF operation is overridden only for the specified frames and CAF will likely move the lens position (likely after a full sweep) after provided manual focus.
The global focus setting is always assumed unless explicitly overridden with a manual setting in PFS.
The global AF is one-shot and only applies to the first frame, if no manual override was specified.
The global CAF applies to all frames unless explicitly overridden by a PFS.
The global manual focus settings do not revert after a manual PFS (the lens position remains).
Confirmation image type
Size
This is the size of the KSCAMERA_PERFRAMESETTING_CAP_HEADER structure.
Type
This must be KSCAMERA_PERFRAMESETTING_ITEM_TYPE.KSCAMERA_PERFRAMESETTING_ITEM_PHOTOCONFIRMATION.
Flags
The flags field is not used.
Payload
There is no payload for this item.
Custom property item
Size
This is the size of the KSCAMERA_PERFRAMESETTING_CAP_HEADER structure + the size of the GUID.
Type
This must be KSCAMERA_PERFRAMESETTING_ITEM_TYPE.KSCAMERA_PERFRAMESETTING_ITEM_CUSTOM.
Flags
The flags field is not used.
Payload
This is the custom property GUID.
Requirements
Header |
Ksmedia.h |