Loading camera/ndk/impl/ACameraMetadata.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -313,6 +313,7 @@ ACameraMetadata::isCaptureRequestTag(const uint32_t tag) { case ACAMERA_TONEMAP_GAMMA: case ACAMERA_TONEMAP_PRESET_CURVE: case ACAMERA_BLACK_LEVEL_LOCK: case ACAMERA_DISTORTION_CORRECTION_MODE: return true; default: return false; Loading camera/ndk/include/camera/NdkCameraMetadataTags.h +84 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ typedef enum acamera_metadata_section { ACAMERA_REPROCESS, ACAMERA_DEPTH, ACAMERA_LOGICAL_MULTI_CAMERA, ACAMERA_DISTORTION_CORRECTION, ACAMERA_SECTION_COUNT, ACAMERA_VENDOR = 0x8000 Loading Loading @@ -108,6 +109,9 @@ typedef enum acamera_metadata_section_start { ACAMERA_LOGICAL_MULTI_CAMERA_START = ACAMERA_LOGICAL_MULTI_CAMERA << 16, ACAMERA_DISTORTION_CORRECTION_START = ACAMERA_DISTORTION_CORRECTION << 16, ACAMERA_VENDOR_START = ACAMERA_VENDOR << 16 } acamera_metadata_section_start_t; Loading Loading @@ -5285,6 +5289,63 @@ typedef enum acamera_metadata_tag { ACAMERA_LOGICAL_MULTI_CAMERA_START + 1, ACAMERA_LOGICAL_MULTI_CAMERA_END, /** * <p>Mode of operation for the lens distortion correction block.</p> * * <p>Type: byte (acamera_metadata_enum_android_distortion_correction_mode_t)</p> * * <p>This tag may appear in: * <ul> * <li>ACameraMetadata from ACameraCaptureSession_captureCallback_result callbacks</li> * <li>ACaptureRequest</li> * </ul></p> * * <p>The lens distortion correction block attempts to improve image quality by fixing * radial, tangential, or other geometric aberrations in the camera device's optics. If * available, the ACAMERA_LENS_DISTORTION field documents the lens's distortion parameters.</p> * <p>OFF means no distortion correction is done.</p> * <p>FAST/HIGH_QUALITY both mean camera device determined distortion correction will be * applied. HIGH_QUALITY mode indicates that the camera device will use the highest-quality * correction algorithms, even if it slows down capture rate. FAST means the camera device * will not slow down capture rate when applying correction. FAST may be the same as OFF if * any correction at all would slow down capture rate. Every output stream will have a * similar amount of enhancement applied.</p> * <p>The correction only applies to processed outputs such as YUV, JPEG, or DEPTH16; it is not * applied to any RAW output. Metadata coordinates such as face rectangles or metering * regions are also not affected by correction.</p> * <p>Applications enabling distortion correction need to pay extra attention when converting * image coordinates between corrected output buffers and the sensor array. For example, if * the app supports tap-to-focus and enables correction, it then has to apply the distortion * model described in ACAMERA_LENS_DISTORTION to the image buffer tap coordinates to properly * calculate the tap position on the sensor active array to be used with * ACAMERA_CONTROL_AF_REGIONS. The same applies in reverse to detected face rectangles if * they need to be drawn on top of the corrected output buffers.</p> * * @see ACAMERA_CONTROL_AF_REGIONS * @see ACAMERA_LENS_DISTORTION */ ACAMERA_DISTORTION_CORRECTION_MODE = // byte (acamera_metadata_enum_android_distortion_correction_mode_t) ACAMERA_DISTORTION_CORRECTION_START, /** * <p>List of distortion correction modes for ACAMERA_DISTORTION_CORRECTION_MODE that are * supported by this camera device.</p> * * @see ACAMERA_DISTORTION_CORRECTION_MODE * * <p>Type: byte[n]</p> * * <p>This tag may appear in: * <ul> * <li>ACameraMetadata from ACameraManager_getCameraCharacteristics</li> * </ul></p> * * <p>No device is required to support this API; such devices will always list only 'OFF'. * All devices that support this API will list both FAST and HIGH_QUALITY.</p> */ ACAMERA_DISTORTION_CORRECTION_AVAILABLE_MODES = // byte[n] ACAMERA_DISTORTION_CORRECTION_START + 1, ACAMERA_DISTORTION_CORRECTION_END, } acamera_metadata_tag_t; /** Loading Loading @@ -7682,6 +7743,29 @@ typedef enum acamera_metadata_enum_acamera_logical_multi_camera_sensor_sync_type } acamera_metadata_enum_android_logical_multi_camera_sensor_sync_type_t; // ACAMERA_DISTORTION_CORRECTION_MODE typedef enum acamera_metadata_enum_acamera_distortion_correction_mode { /** * <p>No distortion correction is applied.</p> */ ACAMERA_DISTORTION_CORRECTION_MODE_OFF = 0, /** * <p>Lens distortion correction is applied without reducing frame rate * relative to sensor output. It may be the same as OFF if distortion correction would * reduce frame rate relative to sensor.</p> */ ACAMERA_DISTORTION_CORRECTION_MODE_FAST = 1, /** * <p>High-quality distortion correction is applied, at the cost of * possibly reduced frame rate relative to sensor output.</p> */ ACAMERA_DISTORTION_CORRECTION_MODE_HIGH_QUALITY = 2, } acamera_metadata_enum_android_distortion_correction_mode_t; #endif /* __ANDROID_API__ >= 24 */ __END_DECLS Loading Loading
camera/ndk/impl/ACameraMetadata.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -313,6 +313,7 @@ ACameraMetadata::isCaptureRequestTag(const uint32_t tag) { case ACAMERA_TONEMAP_GAMMA: case ACAMERA_TONEMAP_PRESET_CURVE: case ACAMERA_BLACK_LEVEL_LOCK: case ACAMERA_DISTORTION_CORRECTION_MODE: return true; default: return false; Loading
camera/ndk/include/camera/NdkCameraMetadataTags.h +84 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ typedef enum acamera_metadata_section { ACAMERA_REPROCESS, ACAMERA_DEPTH, ACAMERA_LOGICAL_MULTI_CAMERA, ACAMERA_DISTORTION_CORRECTION, ACAMERA_SECTION_COUNT, ACAMERA_VENDOR = 0x8000 Loading Loading @@ -108,6 +109,9 @@ typedef enum acamera_metadata_section_start { ACAMERA_LOGICAL_MULTI_CAMERA_START = ACAMERA_LOGICAL_MULTI_CAMERA << 16, ACAMERA_DISTORTION_CORRECTION_START = ACAMERA_DISTORTION_CORRECTION << 16, ACAMERA_VENDOR_START = ACAMERA_VENDOR << 16 } acamera_metadata_section_start_t; Loading Loading @@ -5285,6 +5289,63 @@ typedef enum acamera_metadata_tag { ACAMERA_LOGICAL_MULTI_CAMERA_START + 1, ACAMERA_LOGICAL_MULTI_CAMERA_END, /** * <p>Mode of operation for the lens distortion correction block.</p> * * <p>Type: byte (acamera_metadata_enum_android_distortion_correction_mode_t)</p> * * <p>This tag may appear in: * <ul> * <li>ACameraMetadata from ACameraCaptureSession_captureCallback_result callbacks</li> * <li>ACaptureRequest</li> * </ul></p> * * <p>The lens distortion correction block attempts to improve image quality by fixing * radial, tangential, or other geometric aberrations in the camera device's optics. If * available, the ACAMERA_LENS_DISTORTION field documents the lens's distortion parameters.</p> * <p>OFF means no distortion correction is done.</p> * <p>FAST/HIGH_QUALITY both mean camera device determined distortion correction will be * applied. HIGH_QUALITY mode indicates that the camera device will use the highest-quality * correction algorithms, even if it slows down capture rate. FAST means the camera device * will not slow down capture rate when applying correction. FAST may be the same as OFF if * any correction at all would slow down capture rate. Every output stream will have a * similar amount of enhancement applied.</p> * <p>The correction only applies to processed outputs such as YUV, JPEG, or DEPTH16; it is not * applied to any RAW output. Metadata coordinates such as face rectangles or metering * regions are also not affected by correction.</p> * <p>Applications enabling distortion correction need to pay extra attention when converting * image coordinates between corrected output buffers and the sensor array. For example, if * the app supports tap-to-focus and enables correction, it then has to apply the distortion * model described in ACAMERA_LENS_DISTORTION to the image buffer tap coordinates to properly * calculate the tap position on the sensor active array to be used with * ACAMERA_CONTROL_AF_REGIONS. The same applies in reverse to detected face rectangles if * they need to be drawn on top of the corrected output buffers.</p> * * @see ACAMERA_CONTROL_AF_REGIONS * @see ACAMERA_LENS_DISTORTION */ ACAMERA_DISTORTION_CORRECTION_MODE = // byte (acamera_metadata_enum_android_distortion_correction_mode_t) ACAMERA_DISTORTION_CORRECTION_START, /** * <p>List of distortion correction modes for ACAMERA_DISTORTION_CORRECTION_MODE that are * supported by this camera device.</p> * * @see ACAMERA_DISTORTION_CORRECTION_MODE * * <p>Type: byte[n]</p> * * <p>This tag may appear in: * <ul> * <li>ACameraMetadata from ACameraManager_getCameraCharacteristics</li> * </ul></p> * * <p>No device is required to support this API; such devices will always list only 'OFF'. * All devices that support this API will list both FAST and HIGH_QUALITY.</p> */ ACAMERA_DISTORTION_CORRECTION_AVAILABLE_MODES = // byte[n] ACAMERA_DISTORTION_CORRECTION_START + 1, ACAMERA_DISTORTION_CORRECTION_END, } acamera_metadata_tag_t; /** Loading Loading @@ -7682,6 +7743,29 @@ typedef enum acamera_metadata_enum_acamera_logical_multi_camera_sensor_sync_type } acamera_metadata_enum_android_logical_multi_camera_sensor_sync_type_t; // ACAMERA_DISTORTION_CORRECTION_MODE typedef enum acamera_metadata_enum_acamera_distortion_correction_mode { /** * <p>No distortion correction is applied.</p> */ ACAMERA_DISTORTION_CORRECTION_MODE_OFF = 0, /** * <p>Lens distortion correction is applied without reducing frame rate * relative to sensor output. It may be the same as OFF if distortion correction would * reduce frame rate relative to sensor.</p> */ ACAMERA_DISTORTION_CORRECTION_MODE_FAST = 1, /** * <p>High-quality distortion correction is applied, at the cost of * possibly reduced frame rate relative to sensor output.</p> */ ACAMERA_DISTORTION_CORRECTION_MODE_HIGH_QUALITY = 2, } acamera_metadata_enum_android_distortion_correction_mode_t; #endif /* __ANDROID_API__ >= 24 */ __END_DECLS Loading