diff options
author | Emilian Peev <epeev@google.com> | 2023-11-21 20:45:38 +0000 |
---|---|---|
committer | Emilian Peev <epeev@google.com> | 2023-12-02 00:19:47 +0000 |
commit | a3cb77fd1751e68d69ab69e750d2b63d575b9085 (patch) | |
tree | be15f517a4b77ff97f858b6179cc34d9d29168a6 | |
parent | e523abd89e5c8d916ceb3c345aaf35308a8d7ee9 (diff) | |
download | media-a3cb77fd1751e68d69ab69e750d2b63d575b9085.tar.gz |
Camera: Add support for active physical crop
Allow camera devices to report the source physical camera
crop when using the logical camera.
Additionally enable also intra-frame lens intrinsics samples.
Bug: 297083874
Test: Successful build
Change-Id: I58b34e83a14fc791a46bdb9a8b223d5ca013639d
-rw-r--r-- | camera/docs/docs.html | 284 | ||||
-rw-r--r-- | camera/docs/metadata_definitions.xml | 110 | ||||
-rw-r--r-- | camera/include/system/camera_metadata_tags.h | 4 | ||||
-rw-r--r-- | camera/src/camera_metadata_asserts.cpp | 6 | ||||
-rw-r--r-- | camera/src/camera_metadata_tag_info.c | 25 |
5 files changed, 429 insertions, 0 deletions
diff --git a/camera/docs/docs.html b/camera/docs/docs.html index be27c210..e9cc8485 100644 --- a/camera/docs/docs.html +++ b/camera/docs/docs.html @@ -1127,6 +1127,12 @@ ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li> <li ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li> + <li + ><a href="#dynamic_android.statistics.lensIntrinsicsSamples">android.statistics.lensIntrinsicsSamples</a></li> + <li + ><a href="#dynamic_android.statistics.lensIntrinsicTimestamps">android.statistics.lensIntrinsicTimestamps</a></li> + <li + ><a href="#dynamic_android.statistics.lensIntrinsicSamples">android.statistics.lensIntrinsicSamples</a></li> </ul> </li> </ul> <!-- toc_section --> @@ -1350,6 +1356,8 @@ <ul class="toc_section"> <li ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li> + <li + ><a href="#dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">android.logicalMultiCamera.activePhysicalSensorCropRegion</a></li> </ul> </li> </ul> <!-- toc_section --> @@ -34137,6 +34145,181 @@ is needed.<wbr/></p> <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> <!-- end of entry --> + + <tr class="entry" id="dynamic_android.statistics.lensIntrinsicsSamples"> + <td class="entry_name + " rowspan="3"> + android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsics<wbr/>Samples + </td> + <td class="entry_type"> + <span class="entry_type_name">float</span> + <span class="entry_type_container">x</span> + + <span class="entry_type_array"> + n + </span> + <span class="entry_type_visibility"> [java_public as lensIntrinsicsSample]</span> + + <span class="entry_type_synthetic">[synthetic] </span> + + + + + + </td> <!-- entry_type --> + + <td class="entry_description"> + <p>An array of intra-frame lens intrinsic samples.<wbr/></p> + </td> + + <td class="entry_units"> + </td> + + <td class="entry_range"> + </td> + + <td class="entry_hal_version"> + <p>3.<wbr/>9</p> + </td> + + <td class="entry_tags"> + </td> + + </tr> + <tr class="entries_header"> + <th class="th_details" colspan="6">Details</th> + </tr> + <tr class="entry_cont"> + <td class="entry_details" colspan="6"> + <p>Contains an array of intra-frame <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> updates.<wbr/> This must +not be confused or compared to <a href="#dynamic_android.statistics.oisSamples">android.<wbr/>statistics.<wbr/>ois<wbr/>Samples</a>.<wbr/> Although OIS could be the +main driver,<wbr/> all relevant factors such as focus distance and optical zoom must also +be included.<wbr/> Do note that OIS samples must not be applied on top of the lens intrinsic +samples.<wbr/> +Support for this capture result can be queried via +<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/> +If available,<wbr/> clients can expect multiple samples per capture result.<wbr/> The specific +amount will depend on current frame duration and sampling rate.<wbr/> Generally a sampling rate +greater than or equal to 200Hz is considered sufficient for high quality results.<wbr/></p> + </td> + </tr> + + + <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> + <!-- end of entry --> + + + <tr class="entry" id="dynamic_android.statistics.lensIntrinsicTimestamps"> + <td class="entry_name + " rowspan="3"> + android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsic<wbr/>Timestamps + </td> + <td class="entry_type"> + <span class="entry_type_name">int64</span> + <span class="entry_type_container">x</span> + + <span class="entry_type_array"> + n + </span> + <span class="entry_type_visibility"> [ndk_public]</span> + + + + + + + </td> <!-- entry_type --> + + <td class="entry_description"> + <p>An array of timestamps of lens intrinsics samples,<wbr/> in nanoseconds.<wbr/></p> + </td> + + <td class="entry_units"> + nanoseconds + </td> + + <td class="entry_range"> + </td> + + <td class="entry_hal_version"> + <p>3.<wbr/>9</p> + </td> + + <td class="entry_tags"> + </td> + + </tr> + <tr class="entries_header"> + <th class="th_details" colspan="6">Details</th> + </tr> + <tr class="entry_cont"> + <td class="entry_details" colspan="6"> + <p>The array contains the timestamps of lens intrinsics samples.<wbr/> The timestamps are in the +same timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p> + </td> + </tr> + + + <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> + <!-- end of entry --> + + + <tr class="entry" id="dynamic_android.statistics.lensIntrinsicSamples"> + <td class="entry_name + " rowspan="3"> + android.<wbr/>statistics.<wbr/>lens<wbr/>Intrinsic<wbr/>Samples + </td> + <td class="entry_type"> + <span class="entry_type_name">float</span> + <span class="entry_type_container">x</span> + + <span class="entry_type_array"> + 5 x n + </span> + <span class="entry_type_visibility"> [ndk_public]</span> + + + + + + + </td> <!-- entry_type --> + + <td class="entry_description"> + <p>An array of intra-frame lens intrinsics.<wbr/></p> + </td> + + <td class="entry_units"> + + Pixels in the android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size coordinate system.<wbr/> + + </td> + + <td class="entry_range"> + </td> + + <td class="entry_hal_version"> + <p>3.<wbr/>9</p> + </td> + + <td class="entry_tags"> + </td> + + </tr> + <tr class="entries_header"> + <th class="th_details" colspan="6">Details</th> + </tr> + <tr class="entry_cont"> + <td class="entry_details" colspan="6"> + <p>The data layout and contents of individual array entries matches with +<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>.<wbr/></p> + </td> + </tr> + + + <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> + <!-- end of entry --> + <!-- end of kind --> @@ -38533,6 +38716,106 @@ result metadata to indicate current active physical camera ID.<wbr/></p> <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> <!-- end of entry --> + + <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion"> + <td class="entry_name + " rowspan="5"> + android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Sensor<wbr/>Crop<wbr/>Region + </td> + <td class="entry_type"> + <span class="entry_type_name">int32</span> + <span class="entry_type_container">x</span> + + <span class="entry_type_array"> + 4 + </span> + <span class="entry_type_visibility"> [public as rectangle]</span> + + + + + + + </td> <!-- entry_type --> + + <td class="entry_description"> + <p>The current region of the active physical sensor that will be read out for this +capture.<wbr/></p> + </td> + + <td class="entry_units"> + Pixel coordinates relative to + android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or + android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size of the currently + android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id depending on distortion correction capability + and mode + </td> + + <td class="entry_range"> + </td> + + <td class="entry_hal_version"> + <p>3.<wbr/>9</p> + </td> + + <td class="entry_tags"> + <ul class="entry_tags"> + <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li> + </ul> + </td> + + </tr> + <tr class="entries_header"> + <th class="th_details" colspan="6">Details</th> + </tr> + <tr class="entry_cont"> + <td class="entry_details" colspan="6"> + <p>This capture result matches with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> on non-logical single +camera sensor devices.<wbr/> In case of logical cameras that can switch between several +physical devices in response to <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this capture result will +not behave like <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> where the +combination of both reflects the effective zoom and crop of the logical camera output.<wbr/> +Instead,<wbr/> this capture result value will describe the zoom and crop of the active physical +device.<wbr/> Some examples of when the value of this capture result will change include +switches between different physical lenses,<wbr/> switches between regular and maximum +resolution pixel mode and going through the device digital or optical range.<wbr/> +This capture result is similar to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> with respect to distortion +correction.<wbr/> When the distortion correction mode is OFF,<wbr/> the coordinate system follows +<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/> 0) being the top-left pixel +of the pre-correction active array.<wbr/> When the distortion correction mode is not OFF,<wbr/> +the coordinate system follows <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/> 0) being +the top-left pixel of the active array.<wbr/></p> +<p>For camera devices with the +<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> +capability or devices where <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> +lists <a href="https://developer.android.com/reference/CaptureRequest.html#SENSOR_PIXEL_MODE"><a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a></a> +,<wbr/> the current active physical device +<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> +<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the +coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to +<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> + </td> + </tr> + + <tr class="entries_header"> + <th class="th_details" colspan="6">HAL Implementation Details</th> + </tr> + <tr class="entry_cont"> + <td class="entry_details" colspan="6"> + <p>The output streams must maintain square pixels at all +times,<wbr/> no matter what the relative aspect ratios of the +crop region and the stream are.<wbr/> Negative values for +corner are allowed for raw output if full pixel array is +larger than active pixel array.<wbr/> Width and height may be +rounded to nearest larger supportable width,<wbr/> especially +for raw output,<wbr/> where only a few fixed scales may be +possible.<wbr/></p> + </td> + </tr> + + <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> + <!-- end of entry --> + <!-- end of kind --> @@ -40771,6 +41054,7 @@ output format/<wbr/>size combination for Jpeg/<wbr/>R streams for CaptureRequest <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li> <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li> <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li> + <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">android.logicalMultiCamera.activePhysicalSensorCropRegion</a> (dynamic)</li> </ul> </li> <!-- tag_LOGICALCAMERA --> <li id="tag_HEIC">HEIC - diff --git a/camera/docs/metadata_definitions.xml b/camera/docs/metadata_definitions.xml index 4bca52cf..e82075de 100644 --- a/camera/docs/metadata_definitions.xml +++ b/camera/docs/metadata_definitions.xml @@ -155,6 +155,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata <typedef name="colorSpaceProfiles"> <language name="java">android.hardware.camera2.params.ColorSpaceProfiles</language> </typedef> + <typedef name="lensIntrinsicsSample"> + <language name="java">android.hardware.camera2.params.LensIntrinsicsSample</language> + </typedef> </types> <namespace name="android"> @@ -12142,6 +12145,59 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata is needed. </details> </entry> + <entry name="lensIntrinsicsSamples" type="float" visibility="java_public" synthetic="true" + container="array" typedef="lensIntrinsicsSample" aconfig_flag="concert_mode" + hal_version="3.9"> + <array> + <size>n</size> + </array> + <description> + An array of intra-frame lens intrinsic samples. + </description> + <details> + Contains an array of intra-frame android.lens.intrinsicCalibration updates. This must + not be confused or compared to android.statistics.oisSamples. Although OIS could be the + main driver, all relevant factors such as focus distance and optical zoom must also + be included. Do note that OIS samples must not be applied on top of the lens intrinsic + samples. + Support for this capture result can be queried via + {@link android.hardware.camera2.CameraCharacteristics#getAvailableCaptureResultKeys}. + If available, clients can expect multiple samples per capture result. The specific + amount will depend on current frame duration and sampling rate. Generally a sampling rate + greater than or equal to 200Hz is considered sufficient for high quality results. + </details> + </entry> + <entry name="lensIntrinsicTimestamps" type="int64" visibility="ndk_public" container="array" + aconfig_flag="concert_mode" hal_version="3.9"> + <array> + <size>n</size> + </array> + <description> + An array of timestamps of lens intrinsics samples, in nanoseconds. + </description> + <units>nanoseconds</units> + <details> + The array contains the timestamps of lens intrinsics samples. The timestamps are in the + same timebase as and comparable to android.sensor.timestamp. + </details> + </entry> + <entry name="lensIntrinsicSamples" type="float" visibility="ndk_public" + container="array" aconfig_flag="concert_mode" hal_version="3.9"> + <array> + <size>5</size> + <size>n</size> + </array> + <description> + An array of intra-frame lens intrinsics. + </description> + <units> + Pixels in the android.sensor.info.preCorrectionActiveArraySize coordinate system. + </units> + <details> + The data layout and contents of individual array entries matches with + android.lens.intrinsicCalibration. + </details> + </entry> </dynamic> </section> <section name="tonemap"> @@ -13676,6 +13732,60 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata </hal_details> <tag id="LOGICALCAMERA" /> </entry> + <entry name="activePhysicalSensorCropRegion" type="int32" visibility="public" + container="array" typedef="rectangle" aconfig_flag="concert_mode" hal_version="3.9"> + <array> + <size>4</size> + </array> + <description>The current region of the active physical sensor that will be read out for this + capture.</description> + <units>Pixel coordinates relative to + android.sensor.info.activeArraySize or + android.sensor.info.preCorrectionActiveArraySize of the currently + android.logicalMultiCamera.activePhysicalId depending on distortion correction capability + and mode</units> + <details> + This capture result matches with android.scaler.cropRegion on non-logical single + camera sensor devices. In case of logical cameras that can switch between several + physical devices in response to android.control.zoomRatio, this capture result will + not behave like android.scaler.cropRegion and android.control.zoomRatio, where the + combination of both reflects the effective zoom and crop of the logical camera output. + Instead, this capture result value will describe the zoom and crop of the active physical + device. Some examples of when the value of this capture result will change include + switches between different physical lenses, switches between regular and maximum + resolution pixel mode and going through the device digital or optical range. + This capture result is similar to android.scaler.cropRegion with respect to distortion + correction. When the distortion correction mode is OFF, the coordinate system follows + android.sensor.info.preCorrectionActiveArraySize, with (0, 0) being the top-left pixel + of the pre-correction active array. When the distortion correction mode is not OFF, + the coordinate system follows android.sensor.info.activeArraySize, with (0, 0) being + the top-left pixel of the active array. + + For camera devices with the + {@link android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR} + capability or devices where {@link CameraCharacteristics#getAvailableCaptureRequestKeys} + lists {@link CaptureRequest#SENSOR_PIXEL_MODE android.sensor.pixelMode} + , the current active physical device + android.sensor.info.activeArraySizeMaximumResolution / + android.sensor.info.preCorrectionActiveArraySizeMaximumResolution must be used as the + coordinate system for requests where android.sensor.pixelMode is set to + {@link android.hardware.camera2.CameraMetadata#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION}. + </details> + <ndk_details> + The data representation is int[4], which maps to (left, top, width, height). + </ndk_details> + <hal_details> + The output streams must maintain square pixels at all + times, no matter what the relative aspect ratios of the + crop region and the stream are. Negative values for + corner are allowed for raw output if full pixel array is + larger than active pixel array. Width and height may be + rounded to nearest larger supportable width, especially + for raw output, where only a few fixed scales may be + possible. + </hal_details> + <tag id="LOGICALCAMERA" /> + </entry> </dynamic> </section> <section name="distortionCorrection"> diff --git a/camera/include/system/camera_metadata_tags.h b/camera/include/system/camera_metadata_tags.h index 4fea968e..a7bf9550 100644 --- a/camera/include/system/camera_metadata_tags.h +++ b/camera/include/system/camera_metadata_tags.h @@ -453,6 +453,8 @@ typedef enum camera_metadata_tag { ANDROID_STATISTICS_OIS_TIMESTAMPS, // int64[] | ndk_public | HIDL v3.3 ANDROID_STATISTICS_OIS_X_SHIFTS, // float[] | ndk_public | HIDL v3.3 ANDROID_STATISTICS_OIS_Y_SHIFTS, // float[] | ndk_public | HIDL v3.3 + ANDROID_STATISTICS_LENS_INTRINSIC_TIMESTAMPS, // int64[] | ndk_public | HIDL v3.9 + ANDROID_STATISTICS_LENS_INTRINSIC_SAMPLES, // float[] | ndk_public | HIDL v3.9 ANDROID_STATISTICS_END, ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES = @@ -540,6 +542,8 @@ typedef enum camera_metadata_tag { ANDROID_LOGICAL_MULTI_CAMERA_START, ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE, // enum | public | HIDL v3.3 ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, // byte | public | HIDL v3.4 + ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION, + // int32[] | public | HIDL v3.9 ANDROID_LOGICAL_MULTI_CAMERA_END, ANDROID_DISTORTION_CORRECTION_MODE = // enum | public | HIDL v3.3 diff --git a/camera/src/camera_metadata_asserts.cpp b/camera/src/camera_metadata_asserts.cpp index 9091b5bf..6f559f3f 100644 --- a/camera/src/camera_metadata_asserts.cpp +++ b/camera/src/camera_metadata_asserts.cpp @@ -750,6 +750,10 @@ static_assert(static_cast<int>(ANDROID_STATISTICS_OIS_X_SHIFTS) == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_STATISTICS_OIS_X_SHIFTS)); static_assert(static_cast<int>(ANDROID_STATISTICS_OIS_Y_SHIFTS) == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_STATISTICS_OIS_Y_SHIFTS)); +static_assert(static_cast<int>(ANDROID_STATISTICS_LENS_INTRINSIC_TIMESTAMPS) + == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_STATISTICS_LENS_INTRINSIC_TIMESTAMPS)); +static_assert(static_cast<int>(ANDROID_STATISTICS_LENS_INTRINSIC_SAMPLES) + == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_STATISTICS_LENS_INTRINSIC_SAMPLES)); static_assert(static_cast<int>(ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES) == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES)); static_assert(static_cast<int>(ANDROID_STATISTICS_INFO_HISTOGRAM_BUCKET_COUNT) @@ -842,6 +846,8 @@ static_assert(static_cast<int>(ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE) == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE)); static_assert(static_cast<int>(ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID) == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID)); +static_assert(static_cast<int>(ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION) + == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION)); static_assert(static_cast<int>(ANDROID_DISTORTION_CORRECTION_MODE) == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_DISTORTION_CORRECTION_MODE)); static_assert(static_cast<int>(ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES) diff --git a/camera/src/camera_metadata_tag_info.c b/camera/src/camera_metadata_tag_info.c index 41a6b0ac..f6c963b3 100644 --- a/camera/src/camera_metadata_tag_info.c +++ b/camera/src/camera_metadata_tag_info.c @@ -746,6 +746,10 @@ static tag_info_t android_statistics[ANDROID_STATISTICS_END - { "oisXShifts", TYPE_FLOAT }, [ ANDROID_STATISTICS_OIS_Y_SHIFTS - ANDROID_STATISTICS_START ] = { "oisYShifts", TYPE_FLOAT }, + [ ANDROID_STATISTICS_LENS_INTRINSIC_TIMESTAMPS - ANDROID_STATISTICS_START ] = + { "lensIntrinsicTimestamps", TYPE_INT64 }, + [ ANDROID_STATISTICS_LENS_INTRINSIC_SAMPLES - ANDROID_STATISTICS_START ] = + { "lensIntrinsicSamples", TYPE_FLOAT }, }; static tag_info_t android_statistics_info[ANDROID_STATISTICS_INFO_END - @@ -887,6 +891,9 @@ static tag_info_t android_logical_multi_camera[ANDROID_LOGICAL_MULTI_CAMERA_END { "sensorSyncType", TYPE_BYTE }, [ ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID - ANDROID_LOGICAL_MULTI_CAMERA_START ] = { "activePhysicalId", TYPE_BYTE }, + [ ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION - ANDROID_LOGICAL_MULTI_CAMERA_START ] = + { "activePhysicalSensorCropRegion", + TYPE_INT32 }, }; static tag_info_t android_distortion_correction[ANDROID_DISTORTION_CORRECTION_END - @@ -3393,6 +3400,12 @@ int camera_metadata_enum_snprint(uint32_t tag, case ANDROID_STATISTICS_OIS_Y_SHIFTS: { break; } + case ANDROID_STATISTICS_LENS_INTRINSIC_TIMESTAMPS: { + break; + } + case ANDROID_STATISTICS_LENS_INTRINSIC_SAMPLES: { + break; + } case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: { break; @@ -3736,6 +3749,9 @@ int camera_metadata_enum_snprint(uint32_t tag, case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: { break; } + case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION: { + break; + } case ANDROID_DISTORTION_CORRECTION_MODE: { switch (value) { @@ -6723,6 +6739,12 @@ int camera_metadata_enum_value(uint32_t tag, case ANDROID_STATISTICS_OIS_Y_SHIFTS: { break; } + case ANDROID_STATISTICS_LENS_INTRINSIC_TIMESTAMPS: { + break; + } + case ANDROID_STATISTICS_LENS_INTRINSIC_SAMPLES: { + break; + } case ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES: { break; @@ -7074,6 +7096,9 @@ int camera_metadata_enum_value(uint32_t tag, case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: { break; } + case ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION: { + break; + } case ANDROID_DISTORTION_CORRECTION_MODE: { enumName = "OFF"; |