<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
- android.lens.poseTranslation
- android.lens.intrinsicCalibration
- android.lens.radialDistortion
+ * The SENSOR_INFO_TIMESTAMP_SOURCE of the logical device and physical devices must be
+ the same.
* The logical camera device must be LIMITED or higher device.
Both the logical camera device and its underlying physical devices support the
Additionally, for each guaranteed stream combination, the logical camera supports:
- * Replacing one logical {@link android.graphics.ImageFormat#YUV_420_888|AIMAGE_FORMAT_YUV_420_888 YUV_420_888}
+ * For each guaranteed stream combination, the logical camera supports replacing one
+ logical {@link android.graphics.ImageFormat#YUV_420_888|AIMAGE_FORMAT_YUV_420_888 YUV_420_888}
or raw stream with two physical streams of the same size and format, each from a
separate physical camera, given that the size and format are supported by both
physical cameras.
- * Adding two raw streams, each from one physical camera, if the logical camera doesn't
- advertise RAW capability, but the underlying physical cameras do. This is usually
- the case when the physical cameras have different sensor sizes.
+ * If the logical camera doesn't advertise RAW capability, but the underlying physical
+ cameras do, the logical camera will support guaranteed stream combinations for RAW
+ capability, except that the RAW streams will be physical streams, each from a separate
+ physical camera. This is usually the case when the physical cameras have different
+ sensor sizes.
Using physical streams in place of a logical stream of the same size and format will
not slow down the frame rate of the capture, as long as the minimum frame duration
{@link CaptureRequest.Builder#getPhysicalCameraKey}. Capture requests that contain
individual physical device requests must be built via
{@link android.hardware.camera2.CameraDevice#createCaptureRequest(int, Set)}.
- Such extended capture requests can be passed only to
- {@link CameraCaptureSession#capture} or {@link CameraCaptureSession#captureBurst} and
- not to {@link CameraCaptureSession#setRepeatingRequest} or
- {@link CameraCaptureSession#setRepeatingBurst}.
</details>
<hal_details>
Vendor tags can be listed here. Vendor tag metadata should also
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}.
<value>ON
<notes>Include OIS data in the capture result.</notes></value>
</enum>
- <description>Whether the camera device will output the OIS data in output
+ <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,
- android.statistics.oisShiftPixelY will provide OIS data in the output result metadata.
+ and android.statistics.oisShiftPixelY provide OIS data in the output result metadata.
</details>
</entry>
</controls>