OSDN Git Service

Merge "camera: Update logical multi-camera requirement"
[android-x86/system-media.git] / camera / docs / metadata_definitions.xml
index f00c7fa..1130411 100644 (file)
@@ -2897,7 +2897,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
       <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>
@@ -2912,9 +2912,6 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           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>
@@ -4116,14 +4113,12 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             <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>
@@ -4133,10 +4128,6 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           <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>
@@ -5106,38 +5097,11 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             </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.
+              The camera device supports the MOTION_TRACKING value for
+              android.control.captureIntent, which limits maximum exposure time to 20 ms.
 
-              This capability requires the camera device to support the following:
-
-              * 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
@@ -5158,6 +5122,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
                   - 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
@@ -5165,13 +5131,16 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
 
               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
@@ -5433,10 +5402,6 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           {@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
@@ -5450,6 +5415,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           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}.
@@ -7887,6 +7856,21 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
             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>
@@ -8317,6 +8301,76 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
         <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>
@@ -8820,6 +8874,27 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
                 `RAW`)
               </notes>
             </value>
+            <value hal_version="3.3">
+              EXTERNAL
+              <notes>
+              This camera device is backed by an external camera connected to this Android device.
+
+              The device has capability identical to a LIMITED level device, with the following
+              exceptions:
+
+              * The device may not report lens/sensor related information such as
+                  - android.lens.focalLength
+                  - android.lens.info.hyperfocalDistance
+                  - android.sensor.info.physicalSize
+                  - android.sensor.info.whiteLevel
+                  - android.sensor.blackLevelPattern
+                  - android.sensor.info.colorFilterArrangement
+                  - android.sensor.rollingShutterSkew
+              * The device will report 0 for android.sensor.orientation
+              * The device has less guarantee on stable framerate, as the framerate partly depends
+                on the external camera being used.
+              </notes>
+            </value>
           </enum>
           <description>
           Generally classifies the overall set of the camera device functionality.
@@ -8887,6 +8962,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
           Camera HAL3+ must not implement LEGACY mode. It is there for backwards compatibility in
           the `android.hardware.camera2` user-facing API only on legacy HALv1 devices, and is
           implemented by the camera framework code.
+
+          EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
+          on the external camera being used and is not fully controlled by the device manufacturer.
+          The ITS test suite is exempted for the same reason.
           </hal_details>
         </entry>
         <entry name="version" type="byte" visibility="public" typedef="string" hal_version="3.3">