<dynamic>
<clone entry="android.control.enableZsl" kind="controls">
</clone>
- <entry name="afSceneChange" type="int32" visibility="public" enum="true" hal_version="3.3">
+ <entry name="afSceneChange" type="byte" visibility="public" enum="true" hal_version="3.3">
<enum>
<value>NOT_DETECTED
<notes>Scene change is not detected within the AF region(s).</notes></value>
result. Otherwise the value will be NOT_DETECTED. The threshold for detection is similar
to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.
- afSceneChange may be DETECTED only if afMode is AF_MODE_CONTINUOUS_VIDEO or
- AF_MODE_CONTINUOUS_PICTURE. In other AF modes, afSceneChange must be NOT_DETECTED.
-
This key will be available if the camera device advertises this key via {@link
android.hardware.camera2.CameraCharacteristics#getAvailableCaptureResultKeys|ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS}.
</details>
<notes>The value of android.lens.poseTranslation is relative to the optical center of
the largest camera device facing the same direction as this camera.
- This default value for API levels before Android P.
+ This is the default value for API levels before Android P.
</notes>
</value>
<value>GYROSCOPE
<notes>The value of android.lens.poseTranslation is relative to the position of the
primary gyroscope of this Android device.
-
- This is the value reported by all devices that support the MOTION_TRACKING capability.
</notes>
</value>
</enum>
<details>
Different calibration methods and use cases can produce better or worse results
depending on the selected coordinate origin.
-
- For devices designed to support the MOTION_TRACKING capability, the GYROSCOPE origin
- makes device calibration and later usage by applications combining camera and gyroscope
- information together simpler.
</details>
</entry>
</static>
</value>
<value optional="true" hal_version="3.3" >MOTION_TRACKING
<notes>
- The device supports controls and metadata required for accurate motion tracking for
- use cases such as augmented reality, electronic image stabilization, and so on.
-
- This means this camera device has accurate optical calibration and timestamps relative
- to the inertial sensors.
-
- This capability requires the camera device to support the following:
+ The camera device supports the MOTION_TRACKING value for
+ android.control.captureIntent, which limits maximum exposure time to 20 ms.
- * Capture request templates {@link
- android.hardware.camera2.CameraDevice#TEMPLATE_MOTION_TRACKING_PREVIEW} and {@link
- android.hardware.camera2.CameraDevice#TEMPLATE_MOTION_TRACKING_BEST} are defined.
- * The stream configurations listed in {@link
- android.hardware.camera2.CameraDevice#createCaptureSession} for MOTION_TRACKING are
- supported, either at 30 or 60fps maximum frame rate.
- * The following camera characteristics and capture result metadata are provided:
- - android.lens.intrinsicCalibration
- - android.lens.radialDistortion
- - android.lens.poseRotation
- - android.lens.poseTranslation
- - android.lens.poseReference with value GYROSCOPE
- * The android.sensor.info.timestampSource field has value `REALTIME`. When compared to
- timestamps from the device's gyroscopes, the clock difference for events occuring at
- the same actual time instant will be less than 1 ms.
- * The value of the android.sensor.rollingShutterSkew field is accurate to within 1 ms.
- * The value of android.sensor.exposureTime is guaranteed to be available in the
- capture result.
- * The android.control.captureIntent control supports MOTION_TRACKING to limit maximum
- exposure to 20 milliseconds.
- * The stream configurations required for MOTION_TRACKING (listed at {@link
- android.hardware.camera2.CameraDevice#createCaptureSession}) can operate at least at
- 30fps; optionally, they can operate at 60fps, and '[60, 60]' is listed in
- android.control.aeAvailableTargetFpsRanges.
+ This limits the motion blur of capture images, resulting in better image tracking
+ results for use cases such as image stabilization or augmented reality.
</notes>
</value>
<value optional="true" hal_version="3.3">LOGICAL_MULTI_CAMERA
{@link android.hardware.camera2.CameraCharacteristics#getAvailableSessionKeys}.
</hal_details>
</entry>
+ <entry name="availablePhysicalCameraRequestKeys" type="int32" visibility="hidden"
+ container="array" hwlevel="limited" hal_version="3.3">
+ <array>
+ <size>n</size>
+ </array>
+ <description>A subset of the available request keys that can be overriden for
+ physical devices backing a logical multi-camera.</description>
+ <details>
+ This is a subset of android.request.availableRequestKeys which contains a list
+ of keys that can be overriden using {@link CaptureRequest.Builder#setPhysicalCameraKey}.
+ The respective value of such request key can be obtained by calling
+ {@link CaptureRequest.Builder#getPhysicalCameraKey}. Capture requests that contain
+ individual physical device requests must be built via
+ {@link android.hardware.camera2.CameraDevice#createCaptureRequest(int, Set)}.
+ </details>
+ <hal_details>
+ Vendor tags can be listed here. Vendor tag metadata should also
+ use the extensions C api (refer to
+ android.hardware.camera.device.V3_4.CaptureRequest.physicalCameraSettings for more
+ details).
+
+ Setting/getting vendor tags will be checked against the metadata
+ vendor extensions API and not against this field.
+
+ The HAL must not consume any request tags in the session parameters that
+ are not listed either here or in the vendor tag list.
+
+ There should be no overlap between this set of keys and the available session keys
+ {@link android.hardware.camera2.CameraCharacteristics#getAvailableSessionKeys} along
+ with any other controls that can have impact on the dual-camera sync.
+
+ The public camera2 API will always make the vendor tags visible
+ via
+ {@link android.hardware.camera2.CameraCharacteristics#getAvailablePhysicalCameraRequestKeys}.
+ </hal_details>
+ </entry>
</static>
</section>
<section name="scaler">
LEGACY mode devices will always only support OFF.
</details>
</entry>
+ <entry name="availableOisDataModes" type="byte" visibility="public"
+ type_notes="list of enums" container="array" typedef="enumList" hal_version="3.3">
+ <array>
+ <size>n</size>
+ </array>
+ <description>
+ List of OIS data output modes for android.statistics.oisDataMode that
+ are supported by this camera device.
+ </description>
+ <range>Any value listed in android.statistics.oisDataMode</range>
+ <details>
+ If no OIS data output is available for this camera device, this key will
+ contain only OFF.
+ </details>
+ </entry>
</namespace>
</static>
<dynamic>
<clone entry="android.statistics.lensShadingMapMode" kind="controls">
</clone>
</dynamic>
+ <controls>
+ <entry name="oisDataMode" type="byte" visibility="public" enum="true" hal_version="3.3">
+ <enum>
+ <value>OFF
+ <notes>Do not include OIS data in the capture result.</notes></value>
+ <value>ON
+ <notes>Include OIS data in the capture result.</notes></value>
+ </enum>
+ <description>A control for selecting whether OIS position information is included in output
+ result metadata.</description>
+ <range>android.Statistics.info.availableOisDataModes</range>
+ <details>When set to ON,
+ android.statistics.oisTimestamps, android.statistics.oisShiftPixelX,
+ and android.statistics.oisShiftPixelY provide OIS data in the output result metadata.
+ </details>
+ </entry>
+ </controls>
+ <dynamic>
+ <clone entry="android.statistics.oisDataMode" kind="controls">
+ </clone>
+ <entry name="oisTimestamps" type="int64" visibility="public" container="array" hal_version="3.3">
+ <array>
+ <size>n</size>
+ </array>
+ <description>
+ An array of timestamps of OIS samples, in nanoseconds.
+ </description>
+ <units>nanoseconds</units>
+ <details>
+ The array contains the timestamps of OIS samples. The timestamps are in the same
+ timebase as and comparable to android.sensor.timestamp.
+ </details>
+ </entry>
+ <entry name="oisXShifts" type="float" visibility="public" container="array" hal_version="3.3">
+ <array>
+ <size>n</size>
+ </array>
+ <description>
+ An array of shifts of OIS samples, in x direction.
+ </description>
+ <units>Pixels in active array.</units>
+ <details>
+ The array contains the amount of shifts in x direction, in pixels, based on OIS samples.
+ A positive value is a shift from left to right in active array coordinate system. For
+ example, if the optical center is (1000, 500) in active array coordinates, an shift of
+ (3, 0) puts the new optical center at (1003, 500).
+
+ The number of shifts must match the number of timestamps in
+ android.statistics.oisTimestamps.
+ </details>
+ </entry>
+ <entry name="oisYShifts" type="float" visibility="public" container="array" hal_version="3.3">
+ <array>
+ <size>n</size>
+ </array>
+ <description>
+ An array of shifts of OIS samples, in y direction.
+ </description>
+ <units>Pixels in active array.</units>
+ <details>
+ The array contains the amount of shifts in y direction, in pixels, based on OIS samples.
+ A positive value is a shift from top to bottom in active array coordinate system. For
+ example, if the optical center is (1000, 500) in active array coordinates, an shift of
+ (0, 5) puts the new optical center at (1000, 505).
+
+ The number of shifts must match the number of timestamps in
+ android.statistics.oisTimestamps.
+ </details>
+ </entry>
+ </dynamic>
</section>
<section name="tonemap">
<controls>