相机

摘要

枚举

Anonymous Enum 108{
  CAPTURE_FAILURE_REASON_FLUSHED = 0,
  CAPTURE_FAILURE_REASON_ERROR
}
enum
ACameraCaptureFailure 中描述错误原因的枚举。
Anonymous Enum 109{
  CAPTURE_SEQUENCE_ID_NONE = -1
}
enum
Anonymous Enum 110{
  ERROR_CAMERA_IN_USE = 1,
  ERROR_MAX_CAMERAS_IN_USE = 2,
  ERROR_CAMERA_DISABLED = 3,
  ERROR_CAMERA_DEVICE = 4,
  ERROR_CAMERA_SERVICE = 5
}
enum
ACameraDevice_ErrorStateCallback 错误代码的枚举。
Anonymous Enum 111{
  ACAMERA_TYPE_BYTE = 0,
  ACAMERA_TYPE_INT32 = 1,
  ACAMERA_TYPE_FLOAT = 2,
  ACAMERA_TYPE_INT64 = 3,
  ACAMERA_TYPE_DOUBLE = 4,
  ACAMERA_TYPE_RATIONAL = 5,
  ACAMERA_NUM_TYPES
}
enum
元数据条目可能的数据类型。
ACameraDevice_request_template{
  TEMPLATE_PREVIEW = 1,
  TEMPLATE_STILL_CAPTURE = 2,
  TEMPLATE_RECORD = 3,
  TEMPLATE_VIDEO_SNAPSHOT = 4,
  TEMPLATE_ZERO_SHUTTER_LAG = 5,
  TEMPLATE_MANUAL = 6
}
enum
acamera_metadata_enum_acamera_automotive_lens_facing{
  ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_OTHER = 0,
  ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_FRONT = 1,
  ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_REAR = 2,
  ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_LEFT = 3,
  ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_RIGHT = 4,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_OTHER = 5,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_LEFT = 6,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_CENTER = 7,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_RIGHT = 8,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_LEFT = 9,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_CENTER = 10,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_RIGHT = 11,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_LEFT = 12,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_CENTER = 13,
  ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_RIGHT = 14
}
enum
acamera_metadata_enum_acamera_automotive_location{
  ACAMERA_AUTOMOTIVE_LOCATION_INTERIOR = 0,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_OTHER = 1,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_FRONT = 2,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_REAR = 3,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_LEFT = 4,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_RIGHT = 5,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_OTHER = 6,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_FRONT = 7,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_REAR = 8,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_LEFT = 9,
  ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_RIGHT = 10
}
enum
acamera_metadata_enum_acamera_black_level_lock{
  ACAMERA_BLACK_LEVEL_LOCK_OFF = 0,
  ACAMERA_BLACK_LEVEL_LOCK_ON = 1
}
enum
acamera_metadata_enum_acamera_color_correction_aberration_mode{
  ACAMERA_COLOR_CORRECTION_ABERRATION_MODE_OFF = 0,
  ACAMERA_COLOR_CORRECTION_ABERRATION_MODE_FAST = 1,
  ACAMERA_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY = 2
}
enum
acamera_metadata_enum_acamera_color_correction_mode{
  ACAMERA_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX = 0,
  ACAMERA_COLOR_CORRECTION_MODE_FAST = 1,
  ACAMERA_COLOR_CORRECTION_MODE_HIGH_QUALITY = 2
}
enum
需要枚举的各种条目的枚举定义。
acamera_metadata_enum_acamera_control_ae_antibanding_mode{
  ACAMERA_CONTROL_AE_ANTIBANDING_MODE_OFF = 0,
  ACAMERA_CONTROL_AE_ANTIBANDING_MODE_50HZ = 1,
  ACAMERA_CONTROL_AE_ANTIBANDING_MODE_60HZ = 2,
  ACAMERA_CONTROL_AE_ANTIBANDING_MODE_AUTO = 3
}
enum
acamera_metadata_enum_acamera_control_ae_lock{
  ACAMERA_CONTROL_AE_LOCK_OFF = 0,
  ACAMERA_CONTROL_AE_LOCK_ON = 1
}
enum
acamera_metadata_enum_acamera_control_ae_lock_available{
  ACAMERA_CONTROL_AE_LOCK_AVAILABLE_FALSE = 0,
  ACAMERA_CONTROL_AE_LOCK_AVAILABLE_TRUE = 1
}
enum
acamera_metadata_enum_acamera_control_ae_mode{
  ACAMERA_CONTROL_AE_MODE_OFF = 0,
  ACAMERA_CONTROL_AE_MODE_ON = 1,
  ACAMERA_CONTROL_AE_MODE_ON_AUTO_FLASH = 2,
  ACAMERA_CONTROL_AE_MODE_ON_ALWAYS_FLASH = 3,
  ACAMERA_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE = 4,
  ACAMERA_CONTROL_AE_MODE_ON_EXTERNAL_FLASH = 5,
  ACAMERA_CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY = 6
}
enum
acamera_metadata_enum_acamera_control_ae_precapture_trigger{
  ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE = 0,
  ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START = 1,
  ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL = 2
}
enum
acamera_metadata_enum_acamera_control_ae_state{
  ACAMERA_CONTROL_AE_STATE_INACTIVE = 0,
  ACAMERA_CONTROL_AE_STATE_SEARCHING = 1,
  ACAMERA_CONTROL_AE_STATE_CONVERGED = 2,
  ACAMERA_CONTROL_AE_STATE_LOCKED = 3,
  ACAMERA_CONTROL_AE_STATE_FLASH_REQUIRED = 4,
  ACAMERA_CONTROL_AE_STATE_PRECAPTURE = 5
}
enum
acamera_metadata_enum_acamera_control_af_mode{
  ACAMERA_CONTROL_AF_MODE_OFF = 0,
  ACAMERA_CONTROL_AF_MODE_AUTO = 1,
  ACAMERA_CONTROL_AF_MODE_MACRO = 2,
  ACAMERA_CONTROL_AF_MODE_CONTINUOUS_VIDEO = 3,
  ACAMERA_CONTROL_AF_MODE_CONTINUOUS_PICTURE = 4,
  ACAMERA_CONTROL_AF_MODE_EDOF = 5
}
enum
acamera_metadata_enum_acamera_control_af_scene_change{
  ACAMERA_CONTROL_AF_SCENE_CHANGE_NOT_DETECTED = 0,
  ACAMERA_CONTROL_AF_SCENE_CHANGE_DETECTED = 1
}
enum
acamera_metadata_enum_acamera_control_af_state{
  ACAMERA_CONTROL_AF_STATE_INACTIVE = 0,
  ACAMERA_CONTROL_AF_STATE_PASSIVE_SCAN = 1,
  ACAMERA_CONTROL_AF_STATE_PASSIVE_FOCUSED = 2,
  ACAMERA_CONTROL_AF_STATE_ACTIVE_SCAN = 3,
  ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED = 4,
  ACAMERA_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED = 5,
  ACAMERA_CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6
}
enum
acamera_metadata_enum_acamera_control_af_trigger{
  ACAMERA_CONTROL_AF_TRIGGER_IDLE = 0,
  ACAMERA_CONTROL_AF_TRIGGER_START = 1,
  ACAMERA_CONTROL_AF_TRIGGER_CANCEL = 2
}
enum
acamera_metadata_enum_acamera_control_autoframing{
  ACAMERA_CONTROL_AUTOFRAMING_OFF = 0,
  ACAMERA_CONTROL_AUTOFRAMING_ON = 1
}
enum
acamera_metadata_enum_acamera_control_autoframing_available{
  ACAMERA_CONTROL_AUTOFRAMING_AVAILABLE_FALSE = 0,
  ACAMERA_CONTROL_AUTOFRAMING_AVAILABLE_TRUE = 1
}
enum
acamera_metadata_enum_acamera_control_autoframing_state{
  ACAMERA_CONTROL_AUTOFRAMING_STATE_INACTIVE = 0,
  ACAMERA_CONTROL_AUTOFRAMING_STATE_FRAMING = 1,
  ACAMERA_CONTROL_AUTOFRAMING_STATE_CONVERGED = 2
}
enum
acamera_metadata_enum_acamera_control_awb_lock{
  ACAMERA_CONTROL_AWB_LOCK_OFF = 0,
  ACAMERA_CONTROL_AWB_LOCK_ON = 1
}
enum
acamera_metadata_enum_acamera_control_awb_lock_available{
  ACAMERA_CONTROL_AWB_LOCK_AVAILABLE_FALSE = 0,
  ACAMERA_CONTROL_AWB_LOCK_AVAILABLE_TRUE = 1
}
enum
acamera_metadata_enum_acamera_control_awb_mode{
  ACAMERA_CONTROL_AWB_MODE_OFF = 0,
  ACAMERA_CONTROL_AWB_MODE_AUTO = 1,
  ACAMERA_CONTROL_AWB_MODE_INCANDESCENT = 2,
  ACAMERA_CONTROL_AWB_MODE_FLUORESCENT = 3,
  ACAMERA_CONTROL_AWB_MODE_WARM_FLUORESCENT = 4,
  ACAMERA_CONTROL_AWB_MODE_DAYLIGHT = 5,
  ACAMERA_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT = 6,
  ACAMERA_CONTROL_AWB_MODE_TWILIGHT = 7,
  ACAMERA_CONTROL_AWB_MODE_SHADE = 8
}
enum
acamera_metadata_enum_acamera_control_awb_state{
  ACAMERA_CONTROL_AWB_STATE_INACTIVE = 0,
  ACAMERA_CONTROL_AWB_STATE_SEARCHING = 1,
  ACAMERA_CONTROL_AWB_STATE_CONVERGED = 2,
  ACAMERA_CONTROL_AWB_STATE_LOCKED = 3
}
enum
acamera_metadata_enum_acamera_control_capture_intent{
  ACAMERA_CONTROL_CAPTURE_INTENT_CUSTOM = 0,
  ACAMERA_CONTROL_CAPTURE_INTENT_PREVIEW = 1,
  ACAMERA_CONTROL_CAPTURE_INTENT_STILL_CAPTURE = 2,
  ACAMERA_CONTROL_CAPTURE_INTENT_VIDEO_RECORD = 3,
  ACAMERA_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT = 4,
  ACAMERA_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG = 5,
  ACAMERA_CONTROL_CAPTURE_INTENT_MANUAL = 6,
  ACAMERA_CONTROL_CAPTURE_INTENT_MOTION_TRACKING = 7
}
enum
acamera_metadata_enum_acamera_control_effect_mode{
  ACAMERA_CONTROL_EFFECT_MODE_OFF = 0,
  ACAMERA_CONTROL_EFFECT_MODE_MONO = 1,
  ACAMERA_CONTROL_EFFECT_MODE_NEGATIVE = 2,
  ACAMERA_CONTROL_EFFECT_MODE_SOLARIZE = 3,
  ACAMERA_CONTROL_EFFECT_MODE_SEPIA = 4,
  ACAMERA_CONTROL_EFFECT_MODE_POSTERIZE = 5,
  ACAMERA_CONTROL_EFFECT_MODE_WHITEBOARD = 6,
  ACAMERA_CONTROL_EFFECT_MODE_BLACKBOARD = 7,
  ACAMERA_CONTROL_EFFECT_MODE_AQUA = 8
}
enum
acamera_metadata_enum_acamera_control_enable_zsl{
  ACAMERA_CONTROL_ENABLE_ZSL_FALSE = 0,
  ACAMERA_CONTROL_ENABLE_ZSL_TRUE = 1
}
enum
acamera_metadata_enum_acamera_control_extended_scene_mode{
  ACAMERA_CONTROL_EXTENDED_SCENE_MODE_DISABLED = 0,
  ACAMERA_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE = 1,
  ACAMERA_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS = 2
}
enum
acamera_metadata_enum_acamera_control_low_light_boost_state{
  ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE_INACTIVE = 0,
  ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE = 1
}
enum
acamera_metadata_enum_acamera_control_mode{
  ACAMERA_CONTROL_MODE_OFF = 0,
  ACAMERA_CONTROL_MODE_AUTO = 1,
  ACAMERA_CONTROL_MODE_USE_SCENE_MODE = 2,
  ACAMERA_CONTROL_MODE_OFF_KEEP_STATE = 3,
  ACAMERA_CONTROL_MODE_USE_EXTENDED_SCENE_MODE = 4
}
enum
acamera_metadata_enum_acamera_control_scene_mode{
  ACAMERA_CONTROL_SCENE_MODE_DISABLED = 0,
  ACAMERA_CONTROL_SCENE_MODE_FACE_PRIORITY = 1,
  ACAMERA_CONTROL_SCENE_MODE_ACTION = 2,
  ACAMERA_CONTROL_SCENE_MODE_PORTRAIT = 3,
  ACAMERA_CONTROL_SCENE_MODE_LANDSCAPE = 4,
  ACAMERA_CONTROL_SCENE_MODE_NIGHT = 5,
  ACAMERA_CONTROL_SCENE_MODE_NIGHT_PORTRAIT = 6,
  ACAMERA_CONTROL_SCENE_MODE_THEATRE = 7,
  ACAMERA_CONTROL_SCENE_MODE_BEACH = 8,
  ACAMERA_CONTROL_SCENE_MODE_SNOW = 9,
  ACAMERA_CONTROL_SCENE_MODE_SUNSET = 10,
  ACAMERA_CONTROL_SCENE_MODE_STEADYPHOTO = 11,
  ACAMERA_CONTROL_SCENE_MODE_FIREWORKS = 12,
  ACAMERA_CONTROL_SCENE_MODE_SPORTS = 13,
  ACAMERA_CONTROL_SCENE_MODE_PARTY = 14,
  ACAMERA_CONTROL_SCENE_MODE_CANDLELIGHT = 15,
  ACAMERA_CONTROL_SCENE_MODE_BARCODE = 16,
  ACAMERA_CONTROL_SCENE_MODE_HDR = 18
}
enum
acamera_metadata_enum_acamera_control_settings_override{
  ACAMERA_CONTROL_SETTINGS_OVERRIDE_OFF = 0,
  ACAMERA_CONTROL_SETTINGS_OVERRIDE_ZOOM = 1
}
enum
acamera_metadata_enum_acamera_control_video_stabilization_mode{
  ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_OFF = 0,
  ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_ON = 1,
  ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION = 2
}
enum
acamera_metadata_enum_acamera_depth_available_depth_stream_configurations{
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_OUTPUT = 0,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_INPUT = 1
}
enum
acamera_metadata_enum_acamera_depth_available_depth_stream_configurations_maximum_resolution{
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT = 0,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT = 1
}
enum
acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations{
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT = 0,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT = 1
}
enum
acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations_maximum_resolution{
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT = 0,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT = 1
}
enum
acamera_metadata_enum_acamera_depth_depth_is_exclusive{
  ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE_FALSE = 0,
  ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE_TRUE = 1
}
enum
acamera_metadata_enum_acamera_distortion_correction_mode{
  ACAMERA_DISTORTION_CORRECTION_MODE_OFF = 0,
  ACAMERA_DISTORTION_CORRECTION_MODE_FAST = 1,
  ACAMERA_DISTORTION_CORRECTION_MODE_HIGH_QUALITY = 2
}
enum
acamera_metadata_enum_acamera_edge_mode{
  ACAMERA_EDGE_MODE_OFF = 0,
  ACAMERA_EDGE_MODE_FAST = 1,
  ACAMERA_EDGE_MODE_HIGH_QUALITY = 2,
  ACAMERA_EDGE_MODE_ZERO_SHUTTER_LAG = 3
}
enum
acamera_metadata_enum_acamera_flash_info_available{
  ACAMERA_FLASH_INFO_AVAILABLE_FALSE = 0,
  ACAMERA_FLASH_INFO_AVAILABLE_TRUE = 1
}
enum
acamera_metadata_enum_acamera_flash_mode{
  ACAMERA_FLASH_MODE_OFF = 0,
  ACAMERA_FLASH_MODE_SINGLE = 1,
  ACAMERA_FLASH_MODE_TORCH = 2
}
enum
acamera_metadata_enum_acamera_flash_state{
  ACAMERA_FLASH_STATE_UNAVAILABLE = 0,
  ACAMERA_FLASH_STATE_CHARGING = 1,
  ACAMERA_FLASH_STATE_READY = 2,
  ACAMERA_FLASH_STATE_FIRED = 3,
  ACAMERA_FLASH_STATE_PARTIAL = 4
}
enum
acamera_metadata_enum_acamera_heic_available_heic_stream_configurations{
  ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT = 0,
  ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT = 1
}
enum
acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution{
  ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT = 0,
  ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT = 1
}
enum
acamera_metadata_enum_acamera_hot_pixel_mode{
  ACAMERA_HOT_PIXEL_MODE_OFF = 0,
  ACAMERA_HOT_PIXEL_MODE_FAST = 1,
  ACAMERA_HOT_PIXEL_MODE_HIGH_QUALITY = 2
}
enum
acamera_metadata_enum_acamera_info_supported_hardware_level{
  ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED = 0,
  ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1,
  ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY = 2,
  ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_3 = 3,
  ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL = 4
}
enum
acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations{
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS_OUTPUT = 0,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS_INPUT = 1
}
enum
acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations_maximum_resolution{
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT = 0,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT = 1
}
enum
acamera_metadata_enum_acamera_lens_facing{
  ACAMERA_LENS_FACING_FRONT = 0,
  ACAMERA_LENS_FACING_BACK = 1,
  ACAMERA_LENS_FACING_EXTERNAL = 2
}
enum
acamera_metadata_enum_acamera_lens_info_focus_distance_calibration{
  ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED = 0,
  ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE = 1,
  ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED = 2
}
enum
acamera_metadata_enum_acamera_lens_optical_stabilization_mode{
  ACAMERA_LENS_OPTICAL_STABILIZATION_MODE_OFF = 0,
  ACAMERA_LENS_OPTICAL_STABILIZATION_MODE_ON = 1
}
enum
acamera_metadata_enum_acamera_lens_pose_reference{
  ACAMERA_LENS_POSE_REFERENCE_PRIMARY_CAMERA = 0,
  ACAMERA_LENS_POSE_REFERENCE_GYROSCOPE = 1,
  ACAMERA_LENS_POSE_REFERENCE_UNDEFINED = 2,
  ACAMERA_LENS_POSE_REFERENCE_AUTOMOTIVE = 3
}
enum
acamera_metadata_enum_acamera_lens_state{
  ACAMERA_LENS_STATE_STATIONARY = 0,
  ACAMERA_LENS_STATE_MOVING = 1
}
enum
acamera_metadata_enum_acamera_logical_multi_camera_sensor_sync_type{
  ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE = 0,
  ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED = 1
}
enum
acamera_metadata_enum_acamera_noise_reduction_mode{
  ACAMERA_NOISE_REDUCTION_MODE_OFF = 0,
  ACAMERA_NOISE_REDUCTION_MODE_FAST = 1,
  ACAMERA_NOISE_REDUCTION_MODE_HIGH_QUALITY = 2,
  ACAMERA_NOISE_REDUCTION_MODE_MINIMAL = 3,
  ACAMERA_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG = 4
}
enum
acamera_metadata_enum_acamera_request_available_capabilities{
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE = 0,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR = 1,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING = 2,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_RAW = 3,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS = 5,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE = 6,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT = 8,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING = 10,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA = 11,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME = 12,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA = 13,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA = 14,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR = 16,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE = 19
}
enum
acamera_metadata_enum_acamera_request_available_color_space_profiles_map{
  ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED = -1,
  ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB = 0,
  ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3 = 7,
  ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020_HLG = 16
}
enum
acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map{
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD = 0x1,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10 = 0x2,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10 = 0x4,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10_PLUS = 0x8,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF = 0x10,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF_PO = 0x20,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM = 0x40,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM_PO = 0x80,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF = 0x100,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF_PO = 0x200,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM = 0x400,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM_PO = 0x800,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX = 0x1000
}
enum
acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations{
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW = 0x0,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD = 0x1,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT = 0x2,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT = 0x3,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_ZSL = 0x4,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RAW = 0x5,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_LOW_LATENCY_SNAPSHOT = 0x6,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END = 0x7,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_10BIT_OUTPUT = 0x8,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END_3_8 = 0x9,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START = 0x18
}
enum
acamera_metadata_enum_acamera_scaler_available_stream_configurations{
  ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT = 0,
  ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_INPUT = 1
}
enum
acamera_metadata_enum_acamera_scaler_available_stream_configurations_maximum_resolution{
  ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_OUTPUT = 0,
  ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION_INPUT = 1
}
enum
acamera_metadata_enum_acamera_scaler_available_stream_use_cases{
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT = 0x0,
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW = 0x1,
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE = 0x2,
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD = 0x3,
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL = 0x4,
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL = 0x5,
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW = 0x6
}
enum
acamera_metadata_enum_acamera_scaler_cropping_type{
  ACAMERA_SCALER_CROPPING_TYPE_CENTER_ONLY = 0,
  ACAMERA_SCALER_CROPPING_TYPE_FREEFORM = 1
}
enum
acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported{
  ACAMERA_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED_FALSE = 0,
  ACAMERA_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED_TRUE = 1
}
enum
acamera_metadata_enum_acamera_scaler_physical_camera_multi_resolution_stream_configurations{
  ACAMERA_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS_OUTPUT = 0,
  ACAMERA_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS_INPUT = 1
}
enum
acamera_metadata_enum_acamera_scaler_rotate_and_crop{
  ACAMERA_SCALER_ROTATE_AND_CROP_NONE = 0,
  ACAMERA_SCALER_ROTATE_AND_CROP_90 = 1,
  ACAMERA_SCALER_ROTATE_AND_CROP_180 = 2,
  ACAMERA_SCALER_ROTATE_AND_CROP_270 = 3,
  ACAMERA_SCALER_ROTATE_AND_CROP_AUTO = 4
}
enum
acamera_metadata_enum_acamera_sensor_info_color_filter_arrangement{
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB = 0,
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG = 1,
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG = 2,
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR = 3,
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB = 4,
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO = 5,
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR = 6
}
enum
acamera_metadata_enum_acamera_sensor_info_lens_shading_applied{
  ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED_FALSE = 0,
  ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED_TRUE = 1
}
enum
acamera_metadata_enum_acamera_sensor_info_timestamp_source{
  ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN = 0,
  ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME = 1
}
enum
acamera_metadata_enum_acamera_sensor_pixel_mode{
  ACAMERA_SENSOR_PIXEL_MODE_DEFAULT = 0,
  ACAMERA_SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION = 1
}
enum
acamera_metadata_enum_acamera_sensor_raw_binning_factor_used{
  ACAMERA_SENSOR_RAW_BINNING_FACTOR_USED_TRUE = 0,
  ACAMERA_SENSOR_RAW_BINNING_FACTOR_USED_FALSE = 1
}
enum
acamera_metadata_enum_acamera_sensor_reference_illuminant1{
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT = 1,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_FLUORESCENT = 2,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_TUNGSTEN = 3,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_FLASH = 4,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_FINE_WEATHER = 9,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_CLOUDY_WEATHER = 10,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_SHADE = 11,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_DAYLIGHT_FLUORESCENT = 12,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_DAY_WHITE_FLUORESCENT = 13,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_COOL_WHITE_FLUORESCENT = 14,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_WHITE_FLUORESCENT = 15,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_A = 17,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_B = 18,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_STANDARD_C = 19,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_D55 = 20,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_D65 = 21,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_D75 = 22,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_D50 = 23,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1_ISO_STUDIO_TUNGSTEN = 24
}
enum
acamera_metadata_enum_acamera_sensor_test_pattern_mode{
  ACAMERA_SENSOR_TEST_PATTERN_MODE_OFF = 0,
  ACAMERA_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR = 1,
  ACAMERA_SENSOR_TEST_PATTERN_MODE_COLOR_BARS = 2,
  ACAMERA_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY = 3,
  ACAMERA_SENSOR_TEST_PATTERN_MODE_PN9 = 4,
  ACAMERA_SENSOR_TEST_PATTERN_MODE_CUSTOM1 = 256
}
enum
acamera_metadata_enum_acamera_shading_mode{
  ACAMERA_SHADING_MODE_OFF = 0,
  ACAMERA_SHADING_MODE_FAST = 1,
  ACAMERA_SHADING_MODE_HIGH_QUALITY = 2
}
enum
acamera_metadata_enum_acamera_statistics_face_detect_mode{
  ACAMERA_STATISTICS_FACE_DETECT_MODE_OFF = 0,
  ACAMERA_STATISTICS_FACE_DETECT_MODE_SIMPLE = 1,
  ACAMERA_STATISTICS_FACE_DETECT_MODE_FULL = 2
}
enum
acamera_metadata_enum_acamera_statistics_hot_pixel_map_mode{
  ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE_OFF = 0,
  ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE_ON = 1
}
enum
acamera_metadata_enum_acamera_statistics_lens_shading_map_mode{
  ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE_OFF = 0,
  ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE_ON = 1
}
enum
acamera_metadata_enum_acamera_statistics_ois_data_mode{
  ACAMERA_STATISTICS_OIS_DATA_MODE_OFF = 0,
  ACAMERA_STATISTICS_OIS_DATA_MODE_ON = 1
}
enum
acamera_metadata_enum_acamera_statistics_scene_flicker{
  ACAMERA_STATISTICS_SCENE_FLICKER_NONE = 0,
  ACAMERA_STATISTICS_SCENE_FLICKER_50HZ = 1,
  ACAMERA_STATISTICS_SCENE_FLICKER_60HZ = 2
}
enum
acamera_metadata_enum_acamera_sync_frame_number{
  ACAMERA_SYNC_FRAME_NUMBER_CONVERGING = -1,
  ACAMERA_SYNC_FRAME_NUMBER_UNKNOWN = -2
}
enum
acamera_metadata_enum_acamera_sync_max_latency{
  ACAMERA_SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0,
  ACAMERA_SYNC_MAX_LATENCY_UNKNOWN = -1
}
enum
acamera_metadata_enum_acamera_tonemap_mode{
  ACAMERA_TONEMAP_MODE_CONTRAST_CURVE = 0,
  ACAMERA_TONEMAP_MODE_FAST = 1,
  ACAMERA_TONEMAP_MODE_HIGH_QUALITY = 2,
  ACAMERA_TONEMAP_MODE_GAMMA_VALUE = 3,
  ACAMERA_TONEMAP_MODE_PRESET_CURVE = 4
}
enum
acamera_metadata_enum_acamera_tonemap_preset_curve{
  ACAMERA_TONEMAP_PRESET_CURVE_SRGB = 0,
  ACAMERA_TONEMAP_PRESET_CURVE_REC709 = 1
}
enum
acamera_metadata_section{
  ACAMERA_COLOR_CORRECTION,
  ACAMERA_CONTROL,
  ACAMERA_DEMOSAIC,
  ACAMERA_EDGE,
  ACAMERA_FLASH,
  ACAMERA_FLASH_INFO,
  ACAMERA_HOT_PIXEL,
  ACAMERA_JPEG,
  ACAMERA_LENS,
  ACAMERA_LENS_INFO,
  ACAMERA_NOISE_REDUCTION,
  ACAMERA_QUIRKS,
  ACAMERA_REQUEST,
  ACAMERA_SCALER,
  ACAMERA_SENSOR,
  ACAMERA_SENSOR_INFO,
  ACAMERA_SHADING,
  ACAMERA_STATISTICS,
  ACAMERA_STATISTICS_INFO,
  ACAMERA_TONEMAP,
  ACAMERA_LED,
  ACAMERA_INFO,
  ACAMERA_BLACK_LEVEL,
  ACAMERA_SYNC,
  ACAMERA_REPROCESS,
  ACAMERA_DEPTH,
  ACAMERA_LOGICAL_MULTI_CAMERA,
  ACAMERA_DISTORTION_CORRECTION,
  ACAMERA_HEIC,
  ACAMERA_HEIC_INFO,
  ACAMERA_AUTOMOTIVE,
  ACAMERA_AUTOMOTIVE_LENS,
  ACAMERA_EXTENSION,
  ACAMERA_JPEGR,
  ACAMERA_SECTION_COUNT,
  ACAMERA_VENDOR = 0x8000
}
enum
acamera_metadata_section_start{
  ACAMERA_COLOR_CORRECTION_START = ACAMERA_COLOR_CORRECTION << 16,
  ACAMERA_CONTROL_START = ACAMERA_CONTROL << 16,
  ACAMERA_DEMOSAIC_START = ACAMERA_DEMOSAIC << 16,
  ACAMERA_EDGE_START = ACAMERA_EDGE << 16,
  ACAMERA_FLASH_START = ACAMERA_FLASH << 16,
  ACAMERA_FLASH_INFO_START = ACAMERA_FLASH_INFO << 16,
  ACAMERA_HOT_PIXEL_START = ACAMERA_HOT_PIXEL << 16,
  ACAMERA_JPEG_START = ACAMERA_JPEG << 16,
  ACAMERA_LENS_START = ACAMERA_LENS << 16,
  ACAMERA_LENS_INFO_START = ACAMERA_LENS_INFO << 16,
  ACAMERA_NOISE_REDUCTION_START = ACAMERA_NOISE_REDUCTION << 16,
  ACAMERA_QUIRKS_START = ACAMERA_QUIRKS << 16,
  ACAMERA_REQUEST_START = ACAMERA_REQUEST << 16,
  ACAMERA_SCALER_START = ACAMERA_SCALER << 16,
  ACAMERA_SENSOR_START = ACAMERA_SENSOR << 16,
  ACAMERA_SENSOR_INFO_START = ACAMERA_SENSOR_INFO << 16,
  ACAMERA_SHADING_START = ACAMERA_SHADING << 16,
  ACAMERA_STATISTICS_START = ACAMERA_STATISTICS << 16,
  ACAMERA_STATISTICS_INFO_START = ACAMERA_STATISTICS_INFO << 16,
  ACAMERA_TONEMAP_START = ACAMERA_TONEMAP << 16,
  ACAMERA_LED_START = ACAMERA_LED << 16,
  ACAMERA_INFO_START = ACAMERA_INFO << 16,
  ACAMERA_BLACK_LEVEL_START = ACAMERA_BLACK_LEVEL << 16,
  ACAMERA_SYNC_START = ACAMERA_SYNC << 16,
  ACAMERA_REPROCESS_START = ACAMERA_REPROCESS << 16,
  ACAMERA_DEPTH_START = ACAMERA_DEPTH << 16,
  ACAMERA_LOGICAL_MULTI_CAMERA_START = ACAMERA_LOGICAL_MULTI_CAMERA << 16,
  ACAMERA_DISTORTION_CORRECTION_START = ACAMERA_DISTORTION_CORRECTION << 16,
  ACAMERA_HEIC_START = ACAMERA_HEIC << 16,
  ACAMERA_HEIC_INFO_START = ACAMERA_HEIC_INFO << 16,
  ACAMERA_AUTOMOTIVE_START = ACAMERA_AUTOMOTIVE << 16,
  ACAMERA_AUTOMOTIVE_LENS_START = ACAMERA_AUTOMOTIVE_LENS << 16,
  ACAMERA_EXTENSION_START = ACAMERA_EXTENSION << 16,
  ACAMERA_JPEGR_START = ACAMERA_JPEGR << 16,
  ACAMERA_VENDOR_START = ACAMERA_VENDOR << 16
}
enum
枚举空间中的层级位置。
acamera_metadata_tag{
  ACAMERA_COLOR_CORRECTION_MODE = ACAMERA_COLOR_CORRECTION_START,
  ACAMERA_COLOR_CORRECTION_TRANSFORM = ACAMERA_COLOR_CORRECTION_START + 1,
  ACAMERA_COLOR_CORRECTION_GAINS = ACAMERA_COLOR_CORRECTION_START + 2,
  ACAMERA_COLOR_CORRECTION_ABERRATION_MODE = ACAMERA_COLOR_CORRECTION_START + 3,
  ACAMERA_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES = ACAMERA_COLOR_CORRECTION_START + 4,
  ACAMERA_COLOR_CORRECTION_END,
  ACAMERA_CONTROL_AE_ANTIBANDING_MODE = ACAMERA_CONTROL_START,
  ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION = ACAMERA_CONTROL_START + 1,
  ACAMERA_CONTROL_AE_LOCK = ACAMERA_CONTROL_START + 2,
  ACAMERA_CONTROL_AE_MODE = ACAMERA_CONTROL_START + 3,
  ACAMERA_CONTROL_AE_REGIONS = ACAMERA_CONTROL_START + 4,
  ACAMERA_CONTROL_AE_TARGET_FPS_RANGE = ACAMERA_CONTROL_START + 5,
  ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER = ACAMERA_CONTROL_START + 6,
  ACAMERA_CONTROL_AF_MODE = ACAMERA_CONTROL_START + 7,
  ACAMERA_CONTROL_AF_REGIONS = ACAMERA_CONTROL_START + 8,
  ACAMERA_CONTROL_AF_TRIGGER = ACAMERA_CONTROL_START + 9,
  ACAMERA_CONTROL_AWB_LOCK = ACAMERA_CONTROL_START + 10,
  ACAMERA_CONTROL_AWB_MODE = ACAMERA_CONTROL_START + 11,
  ACAMERA_CONTROL_AWB_REGIONS = ACAMERA_CONTROL_START + 12,
  ACAMERA_CONTROL_CAPTURE_INTENT = ACAMERA_CONTROL_START + 13,
  ACAMERA_CONTROL_EFFECT_MODE = ACAMERA_CONTROL_START + 14,
  ACAMERA_CONTROL_MODE = ACAMERA_CONTROL_START + 15,
  ACAMERA_CONTROL_SCENE_MODE = ACAMERA_CONTROL_START + 16,
  ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE = ACAMERA_CONTROL_START + 17,
  ACAMERA_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES = ACAMERA_CONTROL_START + 18,
  ACAMERA_CONTROL_AE_AVAILABLE_MODES = ACAMERA_CONTROL_START + 19,
  ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES = ACAMERA_CONTROL_START + 20,
  ACAMERA_CONTROL_AE_COMPENSATION_RANGE = ACAMERA_CONTROL_START + 21,
  ACAMERA_CONTROL_AE_COMPENSATION_STEP = ACAMERA_CONTROL_START + 22,
  ACAMERA_CONTROL_AF_AVAILABLE_MODES = ACAMERA_CONTROL_START + 23,
  ACAMERA_CONTROL_AVAILABLE_EFFECTS = ACAMERA_CONTROL_START + 24,
  ACAMERA_CONTROL_AVAILABLE_SCENE_MODES = ACAMERA_CONTROL_START + 25,
  ACAMERA_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES = ACAMERA_CONTROL_START + 26,
  ACAMERA_CONTROL_AWB_AVAILABLE_MODES = ACAMERA_CONTROL_START + 27,
  ACAMERA_CONTROL_MAX_REGIONS = ACAMERA_CONTROL_START + 28,
  ACAMERA_CONTROL_AE_STATE = ACAMERA_CONTROL_START + 31,
  ACAMERA_CONTROL_AF_STATE = ACAMERA_CONTROL_START + 32,
  ACAMERA_CONTROL_AWB_STATE = ACAMERA_CONTROL_START + 34,
  ACAMERA_CONTROL_AE_LOCK_AVAILABLE = ACAMERA_CONTROL_START + 36,
  ACAMERA_CONTROL_AWB_LOCK_AVAILABLE = ACAMERA_CONTROL_START + 37,
  ACAMERA_CONTROL_AVAILABLE_MODES = ACAMERA_CONTROL_START + 38,
  ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE = ACAMERA_CONTROL_START + 39,
  ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST = ACAMERA_CONTROL_START + 40,
  ACAMERA_CONTROL_ENABLE_ZSL = ACAMERA_CONTROL_START + 41,
  ACAMERA_CONTROL_AF_SCENE_CHANGE = ACAMERA_CONTROL_START + 42,
  ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES = ACAMERA_CONTROL_START + 43,
  ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES = ACAMERA_CONTROL_START + 44,
  ACAMERA_CONTROL_EXTENDED_SCENE_MODE = ACAMERA_CONTROL_START + 45,
  ACAMERA_CONTROL_ZOOM_RATIO_RANGE = ACAMERA_CONTROL_START + 46,
  ACAMERA_CONTROL_ZOOM_RATIO = ACAMERA_CONTROL_START + 47,
  ACAMERA_CONTROL_SETTINGS_OVERRIDE = ACAMERA_CONTROL_START + 52,
  ACAMERA_CONTROL_AVAILABLE_SETTINGS_OVERRIDES = ACAMERA_CONTROL_START + 53,
  ACAMERA_CONTROL_AUTOFRAMING = ACAMERA_CONTROL_START + 55,
  ACAMERA_CONTROL_AUTOFRAMING_AVAILABLE = ACAMERA_CONTROL_START + 56,
  ACAMERA_CONTROL_AUTOFRAMING_STATE = ACAMERA_CONTROL_START + 57,
  ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE = ACAMERA_CONTROL_START + 58,
  ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE = ACAMERA_CONTROL_START + 59,
  ACAMERA_CONTROL_END,
  ACAMERA_EDGE_MODE = ACAMERA_EDGE_START,
  ACAMERA_EDGE_AVAILABLE_EDGE_MODES = ACAMERA_EDGE_START + 2,
  ACAMERA_EDGE_END,
  ACAMERA_FLASH_MODE = ACAMERA_FLASH_START + 2,
  ACAMERA_FLASH_STATE = ACAMERA_FLASH_START + 5,
  ACAMERA_FLASH_STRENGTH_LEVEL = ACAMERA_FLASH_START + 6,
  ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL = ACAMERA_FLASH_START + 7,
  ACAMERA_FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL = ACAMERA_FLASH_START + 8,
  ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL = ACAMERA_FLASH_START + 9,
  ACAMERA_FLASH_TORCH_STRENGTH_DEFAULT_LEVEL = ACAMERA_FLASH_START + 10,
  ACAMERA_FLASH_END,
  ACAMERA_FLASH_INFO_AVAILABLE = ACAMERA_FLASH_INFO_START,
  ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL = ACAMERA_FLASH_INFO_START + 2,
  ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL = ACAMERA_FLASH_INFO_START + 3,
  ACAMERA_FLASH_INFO_END,
  ACAMERA_HOT_PIXEL_MODE = ACAMERA_HOT_PIXEL_START,
  ACAMERA_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES = ACAMERA_HOT_PIXEL_START + 1,
  ACAMERA_HOT_PIXEL_END,
  ACAMERA_JPEG_GPS_COORDINATES = ACAMERA_JPEG_START,
  ACAMERA_JPEG_GPS_PROCESSING_METHOD = ACAMERA_JPEG_START + 1,
  ACAMERA_JPEG_GPS_TIMESTAMP = ACAMERA_JPEG_START + 2,
  ACAMERA_JPEG_ORIENTATION = ACAMERA_JPEG_START + 3,
  ACAMERA_JPEG_QUALITY = ACAMERA_JPEG_START + 4,
  ACAMERA_JPEG_THUMBNAIL_QUALITY = ACAMERA_JPEG_START + 5,
  ACAMERA_JPEG_THUMBNAIL_SIZE = ACAMERA_JPEG_START + 6,
  ACAMERA_JPEG_AVAILABLE_THUMBNAIL_SIZES = ACAMERA_JPEG_START + 7,
  ACAMERA_JPEG_END,
  ACAMERA_LENS_APERTURE = ACAMERA_LENS_START,
  ACAMERA_LENS_FILTER_DENSITY = ACAMERA_LENS_START + 1,
  ACAMERA_LENS_FOCAL_LENGTH = ACAMERA_LENS_START + 2,
  ACAMERA_LENS_FOCUS_DISTANCE = ACAMERA_LENS_START + 3,
  ACAMERA_LENS_OPTICAL_STABILIZATION_MODE = ACAMERA_LENS_START + 4,
  ACAMERA_LENS_FACING = ACAMERA_LENS_START + 5,
  ACAMERA_LENS_POSE_ROTATION = ACAMERA_LENS_START + 6,
  ACAMERA_LENS_POSE_TRANSLATION = ACAMERA_LENS_START + 7,
  ACAMERA_LENS_FOCUS_RANGE = ACAMERA_LENS_START + 8,
  ACAMERA_LENS_STATE = ACAMERA_LENS_START + 9,
  ACAMERA_LENS_INTRINSIC_CALIBRATION = ACAMERA_LENS_START + 10,
  ACAMERA_LENS_RADIAL_DISTORTION = ACAMERA_LENS_START + 11,
  ACAMERA_LENS_POSE_REFERENCE = ACAMERA_LENS_START + 12,
  ACAMERA_LENS_DISTORTION = ACAMERA_LENS_START + 13,
  ACAMERA_LENS_DISTORTION_MAXIMUM_RESOLUTION = ACAMERA_LENS_START + 14,
  ACAMERA_LENS_INTRINSIC_CALIBRATION_MAXIMUM_RESOLUTION = ACAMERA_LENS_START + 15,
  ACAMERA_LENS_END,
  ACAMERA_LENS_INFO_AVAILABLE_APERTURES = ACAMERA_LENS_INFO_START,
  ACAMERA_LENS_INFO_AVAILABLE_FILTER_DENSITIES = ACAMERA_LENS_INFO_START + 1,
  ACAMERA_LENS_INFO_AVAILABLE_FOCAL_LENGTHS = ACAMERA_LENS_INFO_START + 2,
  ACAMERA_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION = ACAMERA_LENS_INFO_START + 3,
  ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE = ACAMERA_LENS_INFO_START + 4,
  ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE = ACAMERA_LENS_INFO_START + 5,
  ACAMERA_LENS_INFO_SHADING_MAP_SIZE = ACAMERA_LENS_INFO_START + 6,
  ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION = ACAMERA_LENS_INFO_START + 7,
  ACAMERA_LENS_INFO_END,
  ACAMERA_NOISE_REDUCTION_MODE = ACAMERA_NOISE_REDUCTION_START,
  ACAMERA_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES = ACAMERA_NOISE_REDUCTION_START + 2,
  ACAMERA_NOISE_REDUCTION_END,
  ACAMERA_REQUEST_MAX_NUM_OUTPUT_STREAMS = ACAMERA_REQUEST_START + 6,
  ACAMERA_REQUEST_PIPELINE_DEPTH = ACAMERA_REQUEST_START + 9,
  ACAMERA_REQUEST_PIPELINE_MAX_DEPTH = ACAMERA_REQUEST_START + 10,
  ACAMERA_REQUEST_PARTIAL_RESULT_COUNT = ACAMERA_REQUEST_START + 11,
  ACAMERA_REQUEST_AVAILABLE_CAPABILITIES = ACAMERA_REQUEST_START + 12,
  ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS = ACAMERA_REQUEST_START + 13,
  ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS = ACAMERA_REQUEST_START + 14,
  ACAMERA_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS = ACAMERA_REQUEST_START + 15,
  ACAMERA_REQUEST_AVAILABLE_SESSION_KEYS = ACAMERA_REQUEST_START + 16,
  ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS = ACAMERA_REQUEST_START + 17,
  ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP = ACAMERA_REQUEST_START + 19,
  ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP = ACAMERA_REQUEST_START + 21,
  ACAMERA_REQUEST_END,
  ACAMERA_SCALER_CROP_REGION = ACAMERA_SCALER_START,
  ACAMERA_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM = ACAMERA_SCALER_START + 4,
  ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS = ACAMERA_SCALER_START + 10,
  ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS = ACAMERA_SCALER_START + 11,
  ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS = ACAMERA_SCALER_START + 12,
  ACAMERA_SCALER_CROPPING_TYPE = ACAMERA_SCALER_START + 13,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS = ACAMERA_SCALER_START + 14,
  ACAMERA_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP = ACAMERA_SCALER_START + 15,
  ACAMERA_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES = ACAMERA_SCALER_START + 16,
  ACAMERA_SCALER_ROTATE_AND_CROP = ACAMERA_SCALER_START + 17,
  ACAMERA_SCALER_DEFAULT_SECURE_IMAGE_SIZE = ACAMERA_SCALER_START + 18,
  ACAMERA_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS = ACAMERA_SCALER_START + 19,
  ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION = ACAMERA_SCALER_START + 20,
  ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_SCALER_START + 21,
  ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_SCALER_START + 22,
  ACAMERA_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED = ACAMERA_SCALER_START + 24,
  ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES = ACAMERA_SCALER_START + 26,
  ACAMERA_SCALER_RAW_CROP_REGION = ACAMERA_SCALER_START + 27,
  ACAMERA_SCALER_END,
  ACAMERA_SENSOR_EXPOSURE_TIME = ACAMERA_SENSOR_START,
  ACAMERA_SENSOR_FRAME_DURATION = ACAMERA_SENSOR_START + 1,
  ACAMERA_SENSOR_SENSITIVITY = ACAMERA_SENSOR_START + 2,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT1 = ACAMERA_SENSOR_START + 3,
  ACAMERA_SENSOR_REFERENCE_ILLUMINANT2 = ACAMERA_SENSOR_START + 4,
  ACAMERA_SENSOR_CALIBRATION_TRANSFORM1 = ACAMERA_SENSOR_START + 5,
  ACAMERA_SENSOR_CALIBRATION_TRANSFORM2 = ACAMERA_SENSOR_START + 6,
  ACAMERA_SENSOR_COLOR_TRANSFORM1 = ACAMERA_SENSOR_START + 7,
  ACAMERA_SENSOR_COLOR_TRANSFORM2 = ACAMERA_SENSOR_START + 8,
  ACAMERA_SENSOR_FORWARD_MATRIX1 = ACAMERA_SENSOR_START + 9,
  ACAMERA_SENSOR_FORWARD_MATRIX2 = ACAMERA_SENSOR_START + 10,
  ACAMERA_SENSOR_BLACK_LEVEL_PATTERN = ACAMERA_SENSOR_START + 12,
  ACAMERA_SENSOR_MAX_ANALOG_SENSITIVITY = ACAMERA_SENSOR_START + 13,
  ACAMERA_SENSOR_ORIENTATION = ACAMERA_SENSOR_START + 14,
  ACAMERA_SENSOR_TIMESTAMP = ACAMERA_SENSOR_START + 16,
  ACAMERA_SENSOR_NEUTRAL_COLOR_POINT = ACAMERA_SENSOR_START + 18,
  ACAMERA_SENSOR_NOISE_PROFILE = ACAMERA_SENSOR_START + 19,
  ACAMERA_SENSOR_GREEN_SPLIT = ACAMERA_SENSOR_START + 22,
  ACAMERA_SENSOR_TEST_PATTERN_DATA = ACAMERA_SENSOR_START + 23,
  ACAMERA_SENSOR_TEST_PATTERN_MODE = ACAMERA_SENSOR_START + 24,
  ACAMERA_SENSOR_AVAILABLE_TEST_PATTERN_MODES = ACAMERA_SENSOR_START + 25,
  ACAMERA_SENSOR_ROLLING_SHUTTER_SKEW = ACAMERA_SENSOR_START + 26,
  ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS = ACAMERA_SENSOR_START + 27,
  ACAMERA_SENSOR_DYNAMIC_BLACK_LEVEL = ACAMERA_SENSOR_START + 28,
  ACAMERA_SENSOR_DYNAMIC_WHITE_LEVEL = ACAMERA_SENSOR_START + 29,
  ACAMERA_SENSOR_PIXEL_MODE = ACAMERA_SENSOR_START + 32,
  ACAMERA_SENSOR_RAW_BINNING_FACTOR_USED = ACAMERA_SENSOR_START + 33,
  ACAMERA_SENSOR_END,
  ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE = ACAMERA_SENSOR_INFO_START,
  ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE = ACAMERA_SENSOR_INFO_START + 1,
  ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT = ACAMERA_SENSOR_INFO_START + 2,
  ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE = ACAMERA_SENSOR_INFO_START + 3,
  ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION = ACAMERA_SENSOR_INFO_START + 4,
  ACAMERA_SENSOR_INFO_PHYSICAL_SIZE = ACAMERA_SENSOR_INFO_START + 5,
  ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE = ACAMERA_SENSOR_INFO_START + 6,
  ACAMERA_SENSOR_INFO_WHITE_LEVEL = ACAMERA_SENSOR_INFO_START + 7,
  ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE = ACAMERA_SENSOR_INFO_START + 8,
  ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED = ACAMERA_SENSOR_INFO_START + 9,
  ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE = ACAMERA_SENSOR_INFO_START + 10,
  ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION = ACAMERA_SENSOR_INFO_START + 11,
  ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION = ACAMERA_SENSOR_INFO_START + 12,
  ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION = ACAMERA_SENSOR_INFO_START + 13,
  ACAMERA_SENSOR_INFO_BINNING_FACTOR = ACAMERA_SENSOR_INFO_START + 14,
  ACAMERA_SENSOR_INFO_END,
  ACAMERA_SHADING_MODE = ACAMERA_SHADING_START,
  ACAMERA_SHADING_AVAILABLE_MODES = ACAMERA_SHADING_START + 2,
  ACAMERA_SHADING_END,
  ACAMERA_STATISTICS_FACE_DETECT_MODE = ACAMERA_STATISTICS_START,
  ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE = ACAMERA_STATISTICS_START + 3,
  ACAMERA_STATISTICS_FACE_IDS = ACAMERA_STATISTICS_START + 4,
  ACAMERA_STATISTICS_FACE_LANDMARKS = ACAMERA_STATISTICS_START + 5,
  ACAMERA_STATISTICS_FACE_RECTANGLES = ACAMERA_STATISTICS_START + 6,
  ACAMERA_STATISTICS_FACE_SCORES = ACAMERA_STATISTICS_START + 7,
  ACAMERA_STATISTICS_LENS_SHADING_MAP = ACAMERA_STATISTICS_START + 11,
  ACAMERA_STATISTICS_SCENE_FLICKER = ACAMERA_STATISTICS_START + 14,
  ACAMERA_STATISTICS_HOT_PIXEL_MAP = ACAMERA_STATISTICS_START + 15,
  ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE = ACAMERA_STATISTICS_START + 16,
  ACAMERA_STATISTICS_OIS_DATA_MODE = ACAMERA_STATISTICS_START + 17,
  ACAMERA_STATISTICS_OIS_TIMESTAMPS = ACAMERA_STATISTICS_START + 18,
  ACAMERA_STATISTICS_OIS_X_SHIFTS = ACAMERA_STATISTICS_START + 19,
  ACAMERA_STATISTICS_OIS_Y_SHIFTS = ACAMERA_STATISTICS_START + 20,
  ACAMERA_STATISTICS_LENS_INTRINSIC_TIMESTAMPS = ACAMERA_STATISTICS_START + 21,
  ACAMERA_STATISTICS_LENS_INTRINSIC_SAMPLES = ACAMERA_STATISTICS_START + 22,
  ACAMERA_STATISTICS_END,
  ACAMERA_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES = ACAMERA_STATISTICS_INFO_START,
  ACAMERA_STATISTICS_INFO_MAX_FACE_COUNT = ACAMERA_STATISTICS_INFO_START + 2,
  ACAMERA_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES = ACAMERA_STATISTICS_INFO_START + 6,
  ACAMERA_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES = ACAMERA_STATISTICS_INFO_START + 7,
  ACAMERA_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES = ACAMERA_STATISTICS_INFO_START + 8,
  ACAMERA_STATISTICS_INFO_END,
  ACAMERA_TONEMAP_CURVE_BLUE = ACAMERA_TONEMAP_START,
  ACAMERA_TONEMAP_CURVE_GREEN = ACAMERA_TONEMAP_START + 1,
  ACAMERA_TONEMAP_CURVE_RED = ACAMERA_TONEMAP_START + 2,
  ACAMERA_TONEMAP_MODE = ACAMERA_TONEMAP_START + 3,
  ACAMERA_TONEMAP_MAX_CURVE_POINTS = ACAMERA_TONEMAP_START + 4,
  ACAMERA_TONEMAP_AVAILABLE_TONE_MAP_MODES = ACAMERA_TONEMAP_START + 5,
  ACAMERA_TONEMAP_GAMMA = ACAMERA_TONEMAP_START + 6,
  ACAMERA_TONEMAP_PRESET_CURVE = ACAMERA_TONEMAP_START + 7,
  ACAMERA_TONEMAP_END,
  ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL = ACAMERA_INFO_START,
  ACAMERA_INFO_VERSION = ACAMERA_INFO_START + 1,
  ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS = ACAMERA_INFO_START + 3,
  ACAMERA_INFO_END,
  ACAMERA_BLACK_LEVEL_LOCK = ACAMERA_BLACK_LEVEL_START,
  ACAMERA_BLACK_LEVEL_END,
  ACAMERA_SYNC_FRAME_NUMBER = ACAMERA_SYNC_START,
  ACAMERA_SYNC_MAX_LATENCY = ACAMERA_SYNC_START + 1,
  ACAMERA_SYNC_END,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS = ACAMERA_DEPTH_START + 1,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS = ACAMERA_DEPTH_START + 2,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS = ACAMERA_DEPTH_START + 3,
  ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE = ACAMERA_DEPTH_START + 4,
  ACAMERA_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS = ACAMERA_DEPTH_START + 5,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS = ACAMERA_DEPTH_START + 6,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS = ACAMERA_DEPTH_START + 7,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS = ACAMERA_DEPTH_START + 8,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION = ACAMERA_DEPTH_START + 9,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_DEPTH_START + 10,
  ACAMERA_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_DEPTH_START + 11,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION = ACAMERA_DEPTH_START + 12,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_DEPTH_START + 13,
  ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_DEPTH_START + 14,
  ACAMERA_DEPTH_END,
  ACAMERA_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS = ACAMERA_LOGICAL_MULTI_CAMERA_START,
  ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE = ACAMERA_LOGICAL_MULTI_CAMERA_START + 1,
  ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID = ACAMERA_LOGICAL_MULTI_CAMERA_START + 2,
  ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION = ACAMERA_LOGICAL_MULTI_CAMERA_START + 3,
  ACAMERA_LOGICAL_MULTI_CAMERA_END,
  ACAMERA_DISTORTION_CORRECTION_MODE = ACAMERA_DISTORTION_CORRECTION_START,
  ACAMERA_DISTORTION_CORRECTION_AVAILABLE_MODES = ACAMERA_DISTORTION_CORRECTION_START + 1,
  ACAMERA_DISTORTION_CORRECTION_END,
  ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS = ACAMERA_HEIC_START,
  ACAMERA_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS = ACAMERA_HEIC_START + 1,
  ACAMERA_HEIC_AVAILABLE_HEIC_STALL_DURATIONS = ACAMERA_HEIC_START + 2,
  ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION = ACAMERA_HEIC_START + 3,
  ACAMERA_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_HEIC_START + 4,
  ACAMERA_HEIC_AVAILABLE_HEIC_STALL_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_HEIC_START + 5,
  ACAMERA_HEIC_END,
  ACAMERA_AUTOMOTIVE_LOCATION = ACAMERA_AUTOMOTIVE_START,
  ACAMERA_AUTOMOTIVE_END,
  ACAMERA_AUTOMOTIVE_LENS_FACING = ACAMERA_AUTOMOTIVE_LENS_START,
  ACAMERA_AUTOMOTIVE_LENS_END,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS = ACAMERA_JPEGR_START,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_MIN_FRAME_DURATIONS = ACAMERA_JPEGR_START + 1,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS = ACAMERA_JPEGR_START + 2,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION = ACAMERA_JPEGR_START + 3,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_JPEGR_START + 4,
  ACAMERA_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS_MAXIMUM_RESOLUTION = ACAMERA_JPEGR_START + 5,
  ACAMERA_JPEGR_END
}
enum
相机元数据标签主枚举类型。
camera_status_t{
  ACAMERA_OK = 0,
  ACAMERA_ERROR_BASE = -10000,
  ACAMERA_ERROR_UNKNOWN = ACAMERA_ERROR_BASE,
  ACAMERA_ERROR_INVALID_PARAMETER = ACAMERA_ERROR_BASE - 1,
  ACAMERA_ERROR_CAMERA_DISCONNECTED = ACAMERA_ERROR_BASE - 2,
  ACAMERA_ERROR_NOT_ENOUGH_MEMORY = ACAMERA_ERROR_BASE - 3,
  ACAMERA_ERROR_METADATA_NOT_FOUND = ACAMERA_ERROR_BASE - 4,
  ACAMERA_ERROR_CAMERA_DEVICE = ACAMERA_ERROR_BASE - 5,
  ACAMERA_ERROR_CAMERA_SERVICE = ACAMERA_ERROR_BASE - 6,
  ACAMERA_ERROR_SESSION_CLOSED = ACAMERA_ERROR_BASE - 7,
  ACAMERA_ERROR_INVALID_OPERATION = ACAMERA_ERROR_BASE - 8,
  ACAMERA_ERROR_STREAM_CONFIGURE_FAIL = ACAMERA_ERROR_BASE - 9,
  ACAMERA_ERROR_CAMERA_IN_USE = ACAMERA_ERROR_BASE - 10,
  ACAMERA_ERROR_MAX_CAMERA_IN_USE = ACAMERA_ERROR_BASE - 11,
  ACAMERA_ERROR_CAMERA_DISABLED = ACAMERA_ERROR_BASE - 12,
  ACAMERA_ERROR_PERMISSION_DENIED = ACAMERA_ERROR_BASE - 13,
  ACAMERA_ERROR_UNSUPPORTED_OPERATION = ACAMERA_ERROR_BASE - 14
}
enum
相机状态枚举类型。

类型定义

ACameraCaptureFailure typedef
描述捕获失败的结构体。
ACameraCaptureSession typedef
typedef__BEGIN_DECLS struct ACameraCaptureSession
ACameraCaptureSession 是一个不透明类型,用于管理相机设备的帧捕获。
ACameraCaptureSession_captureCallback_bufferLost)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, ANativeWindow *window, int64_t frameNumber) typedef
void(*
相机缓冲区丢失回调函数的定义。
ACameraCaptureSession_captureCallback_failed)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, ACameraCaptureFailure *failure) typedef
void(*
相机捕获失败回调函数的定义。
ACameraCaptureSession_captureCallback_result)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, const ACameraMetadata *result) typedef
void(*
相机捕获进度/结果回调函数的定义。
ACameraCaptureSession_captureCallback_sequenceAbort)(void *context, ACameraCaptureSession *session, int sequenceId) typedef
void(*
相机序列中止回调函数的定义。
ACameraCaptureSession_captureCallback_sequenceEnd)(void *context, ACameraCaptureSession *session, int sequenceId, int64_t frameNumber) typedef
void(*
相机序列结束回调函数的定义。
ACameraCaptureSession_captureCallback_start)(void *context, ACameraCaptureSession *session, const ACaptureRequest *request, int64_t timestamp) typedef
void(*
相机捕获开始回调函数的定义。
ACameraCaptureSession_captureCallback_startV2)(void *context, ACameraCaptureSession *session, const ACaptureRequest *request, int64_t timestamp, int64_t frameNumber) typedef
void(*
相机捕获开始回调函数的定义。
ACameraCaptureSession_captureCallbacks typedef
ACaptureCaptureSession_captureCallbacks 结构体,用于 ACameraCaptureSession_captureACameraCaptureSession_setRepeatingRequest
ACameraCaptureSession_captureCallbacksV2 typedef
此函数的功能与 ACameraCaptureSession_captureCallbacks 相同,但使用 captureCallback_startV2 回调而非 captureCallback_start,以支持检索帧编号。
ACameraCaptureSession_logicalCamera_captureCallback_failed)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, ALogicalCameraCaptureFailure *failure) typedef
void(*
逻辑相机捕获失败回调函数的定义。
ACameraCaptureSession_logicalCamera_captureCallback_result)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, const ACameraMetadata *result, size_t physicalResultCount, const char **physicalCameraIds, const ACameraMetadata **physicalResults) typedef
void(*
支持逻辑多相机的最终捕获结果回调函数的定义。
ACameraCaptureSession_logicalCamera_captureCallbacks typedef
此函数的功能与 ACameraCaptureSession_captureCallbacks 相同,但使用 onLogicalCameraCaptureCompleted 回调而非 onCaptureCompleted,以支持逻辑多相机。
ACameraCaptureSession_logicalCamera_captureCallbacksV2 typedef
此函数的功能与 ACameraCaptureSession_logicalCamera_captureCallbacks 相同,但使用 captureCallback_startV2 回调而非 captureCallback_start,以支持检索帧编号。
ACameraCaptureSession_prepareCallback)(void *context, ANativeWindow *window, ACameraCaptureSession *session) typedef
void(*
相机捕获会话 onWindowPrepared 回调函数的定义。
ACameraCaptureSession_stateCallback)(void *context, ACameraCaptureSession *session) typedef
void(*
相机捕获会话状态回调函数的定义。
ACameraCaptureSession_stateCallbacks typedef
ACameraDevice typedef
struct ACameraDevice
ACameraDevice 是一个不透明类型,提供对相机设备的访问。
ACameraDevice typedef
struct ACameraDevice
ACameraDevice 是一个不透明类型,提供对相机设备的访问。
ACameraDevice_ErrorStateCallback)(void *context, ACameraDevice *device, int error) typedef
void(*
相机设备错误状态回调,用于 ACameraDevice_StateCallbacks
ACameraDevice_StateCallback)(void *context, ACameraDevice *device) typedef
void(*
相机设备状态回调,用于 ACameraDevice_StateCallbacks
ACameraDevice_StateCallbacks typedef
应用程序用于处理相机设备状态更改的回调,通过 ACameraManager_openCamera 注册。
ACameraDevice_stateCallbacks typedef
为了向后兼容性。
ACameraIdList typedef
struct ACameraIdList
用于保存相机设备 ID 列表的结构体。
ACameraManager typedef
ACameraManager 是一个不透明类型,提供对相机服务的访问。
ACameraManager_AccessPrioritiesChangedCallback)(void *context) typedef
void(*
相机访问权限更改回调函数的定义。
ACameraManager_AvailabilityCallback)(void *context, const char *cameraId) typedef
void(*
相机可用性回调函数的定义。
ACameraManager_AvailabilityCallbacks typedef
用于监听相机设备何时变为可用或不可用打开的监听器。
ACameraManager_ExtendedAvailabilityCallbacks typedef
用于监听相机设备何时变为可用/不可用打开或相机访问权限何时更改的监听器。
ACameraManager_PhysicalCameraAvailabilityCallback)(void *context, const char *cameraId, const char *physicalCameraId) typedef
void(*
物理相机可用性回调函数的定义。
ACameraMetadata typedef
ACameraMetadata 是一个不透明类型,提供对只读相机元数据的访问,例如相机特性(通过 ACameraManager_getCameraCharacteristics)或捕获结果(通过 ACameraCaptureSession_captureCallback_result)。
ACameraMetadata_const_entry typedef
单个只读相机元数据条目。
ACameraMetadata_entry typedef
单个相机元数据条目。
ACameraMetadata_rational typedef
ACameraMetadata 中的 Rational 数据类型定义。
ACameraOutputTarget typedef
单个输出目标的容器。
ACameraOutputTargets typedef
输出目标的容器。
ACameraWindowType typedef 已废弃。 不再需要。NDK 和 VNDK 现在都使用 ANativeWindow。直接使用 ANativeWindow。
此文件定义了 NDK 和 VNDK 变体 camera2 NDK 使用的窗口类型。
ACaptureRequest typedef
ACaptureRequest 是一个不透明类型,包含从相机设备捕获单个图像所需的设置和输出目标。
ACaptureSessionOutput typedef
捕获会话输出的不透明对象,使用 ACaptureSessionOutput_createACaptureSessionSharedOutput_create 创建实例。
ACaptureSessionOutputContainer typedef
CaptureSessionOutput 容器的不透明对象,使用 ACaptureSessionOutputContainer_create 创建实例。
ALogicalCameraCaptureFailure typedef
描述逻辑相机捕获失败的结构体。
acamera_metadata_enum_android_automotive_lens_facing_t typedef
acamera_metadata_enum_android_automotive_location_t typedef
acamera_metadata_enum_android_black_level_lock_t typedef
enum acamera_metadata_enum_acamera_black_level_lock
acamera_metadata_enum_android_color_correction_aberration_mode_t typedef
acamera_metadata_enum_android_color_correction_mode_t typedef
需要枚举的各种条目的枚举定义。
acamera_metadata_enum_android_control_ae_antibanding_mode_t typedef
acamera_metadata_enum_android_control_ae_lock_available_t typedef
enum acamera_metadata_enum_acamera_control_ae_lock_available
acamera_metadata_enum_android_control_ae_lock_t typedef
acamera_metadata_enum_android_control_ae_mode_t typedef
acamera_metadata_enum_android_control_ae_precapture_trigger_t typedef
acamera_metadata_enum_android_control_ae_state_t typedef
acamera_metadata_enum_android_control_af_mode_t typedef
acamera_metadata_enum_android_control_af_scene_change_t typedef
acamera_metadata_enum_android_control_af_state_t typedef
acamera_metadata_enum_android_control_af_trigger_t typedef
acamera_metadata_enum_android_control_autoframing_available_t typedef
enum acamera_metadata_enum_acamera_control_autoframing_available
acamera_metadata_enum_android_control_autoframing_state_t typedef
acamera_metadata_enum_android_control_autoframing_t typedef
acamera_metadata_enum_android_control_awb_lock_available_t typedef
enum acamera_metadata_enum_acamera_control_awb_lock_available
acamera_metadata_enum_android_control_awb_lock_t typedef
acamera_metadata_enum_android_control_awb_mode_t typedef
acamera_metadata_enum_android_control_awb_state_t typedef
acamera_metadata_enum_android_control_capture_intent_t typedef
acamera_metadata_enum_android_control_effect_mode_t typedef
acamera_metadata_enum_android_control_enable_zsl_t typedef
acamera_metadata_enum_android_control_extended_scene_mode_t typedef
acamera_metadata_enum_android_control_low_light_boost_state_t typedef
acamera_metadata_enum_android_control_mode_t typedef
acamera_metadata_enum_android_control_scene_mode_t typedef
acamera_metadata_enum_android_control_settings_override_t typedef
acamera_metadata_enum_android_control_video_stabilization_mode_t typedef
acamera_metadata_enum_android_depth_available_depth_stream_configurations_maximum_resolution_t typedef
enum acamera_metadata_enum_acamera_depth_available_depth_stream_configurations_maximum_resolution
acamera_metadata_enum_android_depth_available_depth_stream_configurations_t typedef
enum acamera_metadata_enum_acamera_depth_available_depth_stream_configurations
acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_maximum_resolution_t typedef
enum acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations_maximum_resolution
acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_t typedef
enum acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations
acamera_metadata_enum_android_depth_depth_is_exclusive_t typedef
enum acamera_metadata_enum_acamera_depth_depth_is_exclusive
acamera_metadata_enum_android_distortion_correction_mode_t typedef
acamera_metadata_enum_android_edge_mode_t typedef
acamera_metadata_enum_android_flash_info_available_t typedef
enum acamera_metadata_enum_acamera_flash_info_available
acamera_metadata_enum_android_flash_mode_t typedef
acamera_metadata_enum_android_flash_state_t typedef
acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t typedef
enum acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution
acamera_metadata_enum_android_heic_available_heic_stream_configurations_t typedef
enum acamera_metadata_enum_acamera_heic_available_heic_stream_configurations
acamera_metadata_enum_android_hot_pixel_mode_t typedef
acamera_metadata_enum_android_info_supported_hardware_level_t typedef
acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_maximum_resolution_t typedef
enum acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations_maximum_resolution
acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_t typedef
enum acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations
acamera_metadata_enum_android_lens_facing_t typedef
acamera_metadata_enum_android_lens_info_focus_distance_calibration_t typedef
acamera_metadata_enum_android_lens_optical_stabilization_mode_t typedef
acamera_metadata_enum_android_lens_pose_reference_t typedef
acamera_metadata_enum_android_lens_state_t typedef
acamera_metadata_enum_android_logical_multi_camera_sensor_sync_type_t typedef
acamera_metadata_enum_android_noise_reduction_mode_t typedef
acamera_metadata_enum_android_request_available_capabilities_t typedef
acamera_metadata_enum_android_request_available_color_space_profiles_map_t typedef
acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t typedef
acamera_metadata_enum_android_scaler_available_recommended_stream_configurations_t typedef
acamera_metadata_enum_android_scaler_available_stream_configurations_maximum_resolution_t typedef
enum acamera_metadata_enum_acamera_scaler_available_stream_configurations_maximum_resolution
acamera_metadata_enum_android_scaler_available_stream_configurations_t typedef
enum acamera_metadata_enum_acamera_scaler_available_stream_configurations
acamera_metadata_enum_android_scaler_available_stream_use_cases_t typedef
acamera_metadata_enum_android_scaler_cropping_type_t typedef
acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t typedef
enum acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported
acamera_metadata_enum_android_scaler_physical_camera_multi_resolution_stream_configurations_t typedef
enum acamera_metadata_enum_acamera_scaler_physical_camera_multi_resolution_stream_configurations
acamera_metadata_enum_android_scaler_rotate_and_crop_t typedef
acamera_metadata_enum_android_sensor_info_color_filter_arrangement_t typedef
acamera_metadata_enum_android_sensor_info_lens_shading_applied_t typedef
enum acamera_metadata_enum_acamera_sensor_info_lens_shading_applied
acamera_metadata_enum_android_sensor_info_timestamp_source_t typedef
acamera_metadata_enum_android_sensor_pixel_mode_t typedef
acamera_metadata_enum_android_sensor_raw_binning_factor_used_t typedef
acamera_metadata_enum_android_sensor_reference_illuminant1_t typedef
acamera_metadata_enum_android_sensor_test_pattern_mode_t typedef
acamera_metadata_enum_android_shading_mode_t typedef
acamera_metadata_enum_android_statistics_face_detect_mode_t typedef
acamera_metadata_enum_android_statistics_hot_pixel_map_mode_t typedef
acamera_metadata_enum_android_statistics_lens_shading_map_mode_t typedef
acamera_metadata_enum_android_statistics_ois_data_mode_t typedef
acamera_metadata_enum_android_statistics_scene_flicker_t typedef
acamera_metadata_enum_android_sync_frame_number_t typedef
acamera_metadata_enum_android_sync_max_latency_t typedef
acamera_metadata_enum_android_tonemap_mode_t typedef
acamera_metadata_enum_android_tonemap_preset_curve_t typedef
acamera_metadata_section_start_t typedef
枚举空间中的层级位置。
acamera_metadata_section_t typedef
enum acamera_metadata_section
acamera_metadata_tag_t typedef
相机元数据标签主枚举类型。

函数

ACameraCaptureSession_abortCaptures(ACameraCaptureSession *session)
尽快丢弃所有当前待处理和进行中的捕获。
ACameraCaptureSession_capture(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
提交一组请求,以尽可能短的时间按序列作为连拍进行捕获。
ACameraCaptureSession_captureV2(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacksV2 *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
此函数的功能与 ACameraCaptureSession_capture 相同,并增加了对相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。
ACameraCaptureSession_close(ACameraCaptureSession *session)
void
关闭此捕获会话。
ACameraCaptureSession_getDevice(ACameraCaptureSession *session, ACameraDevice **device)
如果方法成功,在 device 参数中获取与此捕获会话关联的 ACameraDevice 指针。
ACameraCaptureSession_logicalCamera_capture(ACameraCaptureSession *session, ACameraCaptureSession_logicalCamera_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
此函数的功能与 ACameraCaptureSession_capture 相同,并增加了对逻辑多相机的支持,其中捕获回调支持物理相机的结果元数据。
ACameraCaptureSession_logicalCamera_captureV2(ACameraCaptureSession *session, ACameraCaptureSession_logicalCamera_captureCallbacksV2 *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
此函数的功能与 ACameraCaptureSession_logical_capture 相同,并增加了对逻辑多相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。
ACameraCaptureSession_logicalCamera_setRepeatingRequest(ACameraCaptureSession *session, ACameraCaptureSession_logicalCamera_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
此函数的功能与 ACameraCaptureSession_setRepeatingRequest 相同,并增加了对逻辑多相机的支持,其中捕获回调支持物理相机的结果元数据。
ACameraCaptureSession_logicalCamera_setRepeatingRequestV2(ACameraCaptureSession *session, ACameraCaptureSession_logicalCamera_captureCallbacksV2 *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
此函数的功能与 ACameraCaptureSession_logical_setRepeatingRequest 相同,并增加了对逻辑多相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。
ACameraCaptureSession_prepareWindow(ACameraCaptureSession *session, ANativeWindow *window)
ACameraCaptureSession_setRepeatingRequest(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
通过此捕获会话请求无限重复捕获图像序列。
ACameraCaptureSession_setRepeatingRequestV2(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacksV2 *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
此函数的功能与 ACameraCaptureSession_logical_setRepeatingRequest 相同,并增加了对逻辑多相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。
ACameraCaptureSession_setWindowPreparedCallback(ACameraCaptureSession *session, void *context, ACameraCaptureSession_prepareCallback callback)
设置回调函数,当客户端通过调用 ACameraCaptureSession_prepareWindow 请求预分配缓冲区的输出窗口完成缓冲区预分配时,将调用此回调函数。
ACameraCaptureSession_stopRepeating(ACameraCaptureSession *session)
取消由 ACameraCaptureSession_setRepeatingRequest 设置的任何正在进行的重复捕获。
ACameraCaptureSession_updateSharedOutput(ACameraCaptureSession *session, ACaptureSessionOutput *output)
更新共享的 ACaptureSessionOutput。
ACameraDevice_close(ACameraDevice *device)
同步关闭连接并释放此 ACameraDevice。
ACameraDevice_createCaptureRequest(const ACameraDevice *device, ACameraDevice_request_template templateId, ACaptureRequest **request)
创建一个用于捕获图像的 ACaptureRequest,使用目标用例的模板进行初始化。
ACameraDevice_createCaptureRequest_withPhysicalIds(const ACameraDevice *device, ACameraDevice_request_template templateId, const ACameraIdList *physicalIdList, ACaptureRequest **request)
创建一个用于捕获图像的逻辑多相机 ACaptureRequest,使用目标用例的模板进行初始化,并能够指定物理相机设置。
ACameraDevice_createCaptureSession(ACameraDevice *device, const ACaptureSessionOutputContainer *outputs, const ACameraCaptureSession_stateCallbacks *callbacks, ACameraCaptureSession **session)
通过向相机设备提供 ANativeWindow 的目标输出集来创建一个新的相机捕获会话。
ACameraDevice_createCaptureSessionWithSessionParameters(ACameraDevice *device, const ACaptureSessionOutputContainer *outputs, const ACaptureRequest *sessionParameters, const ACameraCaptureSession_stateCallbacks *callbacks, ACameraCaptureSession **session)
创建一个新的相机捕获会话,类似于 ACameraDevice_createCaptureSession
ACameraDevice_getId(const ACameraDevice *device)
const char *
返回与此相机设备关联的相机 ID。
ACameraDevice_isSessionConfigurationSupported(const ACameraDevice *device, const ACaptureSessionOutputContainer *sessionOutputContainer)
检查相机设备是否支持特定的 ACaptureSessionOutputContainer
ACameraManager_create()
创建 ACameraManager 实例。
ACameraManager_delete(ACameraManager *manager)
void
ACameraManager_deleteCameraIdList(ACameraIdList *cameraIdList)
void
删除通过 ACameraManager_getCameraIdList 分配的相机设备列表。
ACameraManager_getCameraCharacteristics(ACameraManager *manager, const char *cameraId, ACameraMetadata **characteristics)
查询相机设备的能力。
ACameraManager_getCameraIdList(ACameraManager *manager, ACameraIdList **cameraIdList)
创建当前连接的相机设备列表,包括可能被其他相机 API 客户端使用的相机。
ACameraManager_openCamera(ACameraManager *manager, const char *cameraId, ACameraDevice_StateCallbacks *callback, ACameraDevice **device)
打开与给定 ID 相机的连接。
ACameraManager_registerAvailabilityCallback(ACameraManager *manager, const ACameraManager_AvailabilityCallbacks *callback)
注册相机可用性回调函数。
ACameraManager_registerExtendedAvailabilityCallback(ACameraManager *manager, const ACameraManager_ExtendedAvailabilityCallbacks *callback)
注册相机扩展可用性回调函数。
ACameraManager_unregisterAvailabilityCallback(ACameraManager *manager, const ACameraManager_AvailabilityCallbacks *callback)
注销相机可用性回调函数。
ACameraManager_unregisterExtendedAvailabilityCallback(ACameraManager *manager, const ACameraManager_ExtendedAvailabilityCallbacks *callback)
注销相机扩展可用性回调函数。
ACameraMetadata_copy(const ACameraMetadata *src)
创建输入 ACameraMetadata 的副本。
ACameraMetadata_free(ACameraMetadata *metadata)
void
释放 ACameraMetadata 结构体。
ACameraMetadata_fromCameraMetadata(JNIEnv *env, jobject cameraMetadata)
返回一个 ACameraMetadata,它引用与 Java API 中的 android.hardware.camera2.CameraMetadata 相同的数据。
ACameraMetadata_getAllTags(const ACameraMetadata *metadata, int32_t *numEntries, const uint32_t **tags)
列出输入 ACameraMetadata 中的所有条目标签。
ACameraMetadata_getConstEntry(const ACameraMetadata *metadata, uint32_t tag, ACameraMetadata_const_entry *entry)
从输入 ACameraMetadata 获取元数据条目。
ACameraMetadata_getTagFromName(const ACameraMetadata *metadata, const char *name, uint32_t *tag)
按名称查找仅适用于特定设备的设备特定自定义标签的标签 ID 值。
ACameraMetadata_isLogicalMultiCamera(const ACameraMetadata *staticMetadata, size_t *numPhysicalCameras, const char *const **physicalCameraIds)
bool
辅助函数,用于检查相机是否为逻辑多相机。
ACameraOutputTarget_create(ANativeWindow *window, ACameraOutputTarget **output)
创建一个 ACameraOutputTarget 对象。
ACameraOutputTarget_free(ACameraOutputTarget *output)
void
释放 ACameraOutputTarget 对象。
ACaptureRequest_addTarget(ACaptureRequest *request, const ACameraOutputTarget *output)
ACameraOutputTarget 对象添加到 ACaptureRequest
ACaptureRequest_copy(const ACaptureRequest *src)
创建输入 ACaptureRequest 的副本。
ACaptureRequest_free(ACaptureRequest *request)
void
释放 ACaptureRequest 结构体。
ACaptureRequest_getAllTags(const ACaptureRequest *request, int32_t *numTags, const uint32_t **tags)
ACaptureRequest_getConstEntry(const ACaptureRequest *request, uint32_t tag, ACameraMetadata_const_entry *entry)
从输入 ACaptureRequest 获取元数据条目。
ACaptureRequest_getConstEntry_physicalCamera(const ACaptureRequest *request, const char *physicalId, uint32_t tag, ACameraMetadata_const_entry *entry)
获取输入 ACaptureRequest 中用于逻辑多相机设备的物理相机的元数据条目。
ACaptureRequest_getUserContext(const ACaptureRequest *request, void **context)
获取 ACaptureRequest 的用户上下文指针。
ACaptureRequest_removeTarget(ACaptureRequest *request, const ACameraOutputTarget *output)
ACaptureRequest 移除 ACameraOutputTarget 对象。
ACaptureRequest_setEntry_double(ACaptureRequest *request, uint32_t tag, uint32_t count, const double *data)
使用 double 数据类型设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_float(ACaptureRequest *request, uint32_t tag, uint32_t count, const float *data)
使用 float 数据类型设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_i32(ACaptureRequest *request, uint32_t tag, uint32_t count, const int32_t *data)
使用有符号 32 位数据类型设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_i64(ACaptureRequest *request, uint32_t tag, uint32_t count, const int64_t *data)
使用有符号 64 位数据类型设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_physicalCamera_double(ACaptureRequest *request, const char *physicalId, uint32_t tag, uint32_t count, const double *data)
使用 double 数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_physicalCamera_float(ACaptureRequest *request, const char *physicalId, uint32_t tag, uint32_t count, const float *data)
使用 float 数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_physicalCamera_i32(ACaptureRequest *request, const char *physicalId, uint32_t tag, uint32_t count, const int32_t *data)
使用有符号 32 位数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_physicalCamera_i64(ACaptureRequest *request, const char *physicalId, uint32_t tag, uint32_t count, const int64_t *data)
使用有符号 64 位数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_physicalCamera_rational(ACaptureRequest *request, const char *physicalId, uint32_t tag, uint32_t count, const ACameraMetadata_rational *data)
使用 rational 数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_physicalCamera_u8(ACaptureRequest *request, const char *physicalId, uint32_t tag, uint32_t count, const uint8_t *data)
使用无符号 8 位数据类型为支持逻辑多相机的物理相机设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_rational(ACaptureRequest *request, uint32_t tag, uint32_t count, const ACameraMetadata_rational *data)
使用 rational 数据类型设置/更改相机捕获控制条目。
ACaptureRequest_setEntry_u8(ACaptureRequest *request, uint32_t tag, uint32_t count, const uint8_t *data)
使用无符号 8 位数据类型设置/更改相机捕获控制条目。
ACaptureRequest_setUserContext(ACaptureRequest *request, void *context)
将任意用户上下文指针与 ACaptureRequest 关联。
ACaptureSessionOutputContainer_add(ACaptureSessionOutputContainer *container, const ACaptureSessionOutput *output)
ACaptureSessionOutputContainer_create(ACaptureSessionOutputContainer **container)
创建一个捕获会话输出容器。
ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer *container)
void
释放捕获会话输出容器。
ACaptureSessionOutputContainer_remove(ACaptureSessionOutputContainer *container, const ACaptureSessionOutput *output)
ACaptureSessionOutputContainer 移除 ACameraSessionOutput 对象。
ACaptureSessionOutput_create(ANativeWindow *anw, ACaptureSessionOutput **output)
创建一个 ACameraSessionOutput 对象。
ACaptureSessionOutput_free(ACaptureSessionOutput *output)
void
释放 ACameraSessionOutput 对象。
ACaptureSessionPhysicalOutput_create(ANativeWindow *anw, const char *physicalId, ACaptureSessionOutput **output)
创建一个 ACaptureSessionOutput 对象,用于从作为逻辑相机设备一部分的物理相机进行流式传输。
ACaptureSessionSharedOutput_add(ACaptureSessionOutput *output, ANativeWindow *anw)
向共享的 ACaptureSessionOutput 添加一个本地窗口。
ACaptureSessionSharedOutput_create(ANativeWindow *anw, ACaptureSessionOutput **output)
创建一个共享的 ACaptureSessionOutput 对象。
ACaptureSessionSharedOutput_remove(ACaptureSessionOutput *output, ANativeWindow *anw)
从共享的 ACaptureSessionOutput 移除一个本地窗口。

结构体

ACameraCaptureFailure

描述捕获失败的结构体。

ACameraCaptureSession_captureCallbacks

ACaptureCaptureSession_captureCallbacks 结构体,用于 ACameraCaptureSession_captureACameraCaptureSession_setRepeatingRequest

ACameraCaptureSession_captureCallbacksV2

此函数的功能与 ACameraCaptureSession_captureCallbacks 相同,但使用 captureCallback_startV2 回调而非 captureCallback_start,以支持检索帧编号。

ACameraCaptureSession_logicalCamera_captureCallbacks

此函数的功能与 ACameraCaptureSession_captureCallbacks 相同,但使用 onLogicalCameraCaptureCompleted 回调而非 onCaptureCompleted,以支持逻辑多相机。

ACameraCaptureSession_logicalCamera_captureCallbacksV2

此函数的功能与 ACameraCaptureSession_logicalCamera_captureCallbacks 相同,但使用 captureCallback_startV2 回调而非 captureCallback_start,以支持检索帧编号。

ACameraCaptureSession_stateCallbacks

捕获会话状态回调,用于 ACameraDevice_createCaptureSessionACameraDevice_createCaptureSessionWithSessionParameters

ACameraDevice_StateCallbacks

应用程序用于处理相机设备状态更改的回调,通过 ACameraManager_openCamera 注册。

ACameraIdList

用于保存相机设备 ID 列表的结构体。

ACameraManager_AvailabilityListener

用于监听相机设备何时变为可用或不可用打开的监听器。

ACameraManager_ExtendedAvailabilityListener

用于监听相机设备何时变为可用/不可用打开或相机访问权限何时更改的监听器。

ACameraMetadata_const_entry

单个只读相机元数据条目。

ACameraMetadata_entry

单个相机元数据条目。

ACameraMetadata_rational

ACameraMetadata 中的 Rational 数据类型定义。

ALogicalCameraCaptureFailure

描述逻辑相机捕获失败的结构体。

枚举

Anonymous Enum 108

声明于 camera/NdkCameraCaptureSession.h
 Anonymous Enum 108

ACameraCaptureFailure 中描述错误原因的枚举。

属性
CAPTURE_FAILURE_REASON_ERROR

由于框架错误,捕获会话已丢弃此帧。

CAPTURE_FAILURE_REASON_FLUSHED

由于调用 ACameraCaptureSession_abortCaptures,捕获会话已丢弃此帧。

Anonymous Enum 109

声明于 camera/NdkCameraCaptureSession.h
 Anonymous Enum 109

Anonymous Enum 110

声明于 camera/NdkCameraDevice.h
 Anonymous Enum 110

ACameraDevice_ErrorStateCallback 错误代码的枚举。

属性
ERROR_CAMERA_DEVICE

相机设备遇到了严重错误。

相机设备需要重新打开才能再次使用。

ERROR_CAMERA_DISABLED

由于设备策略,相机被禁用,无法打开。

ERROR_CAMERA_IN_USE

相机设备已在使用中。

ERROR_CAMERA_SERVICE

相机服务遇到了严重错误。

可能需要关闭并重新启动 Android 设备以恢复相机功能,或者可能存在持续的硬件问题。通过关闭 CameraDevice 和 CameraManager,并尝试从头开始重新获取所有资源,可能可以尝试恢复。

ERROR_MAX_CAMERAS_IN_USE

已达到系统范围内打开相机或相机资源的数量限制,在关闭之前的实例之前,无法打开更多相机设备。

Anonymous Enum 111

声明于 camera/NdkCameraMetadata.h
 Anonymous Enum 111

元数据条目可能的数据类型。

与 system/media/include/system/camera_metadata.h 同步。

属性
ACAMERA_NUM_TYPES

类型字段的数量。

ACAMERA_TYPE_BYTE

无符号 8 位整数 (uint8_t)

ACAMERA_TYPE_DOUBLE

64 位浮点数 (double)

ACAMERA_TYPE_FLOAT

32 位浮点数 (float)

ACAMERA_TYPE_INT32

有符号 32 位整数 (int32_t)

ACAMERA_TYPE_INT64

有符号 64 位整数 (int64_t)

ACAMERA_TYPE_RATIONAL

64 位分数 (ACameraMetadata_rational)

ACameraDevice_request_template

声明于 camera/NdkCameraDevice.h
 ACameraDevice_request_template

捕获请求预定义模板类型,用于 ACameraDevice_createCaptureRequestACameraDevice_createCaptureRequest_withPhysicalIds

属性
TEMPLATE_MANUAL

用于直接应用程序控制捕获参数的基本模板。

所有自动控制(自动曝光、自动白平衡、自动对焦)均已禁用,后处理参数设置为预览质量。手动捕获参数(曝光、感光度等)设置为合理的默认值,但应根据预期的用例由应用程序覆盖。支持 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR 功能的相机设备保证支持此模板。

另请参阅: ACameraDevice_createCaptureRequest

TEMPLATE_PREVIEW

创建适用于相机预览窗口的请求。

具体来说,这意味着高帧率优先于最高质量的后处理。这些请求通常与 ACameraCaptureSession_setRepeatingRequest 方法一起使用。所有相机设备都保证支持此模板。

另请参阅: ACameraDevice_createCaptureRequest

TEMPLATE_RECORD

创建适用于视频录制的请求。

具体来说,这意味着使用稳定的帧率,并且后处理设置为录制质量。这些请求通常与 ACameraCaptureSession_setRepeatingRequest 方法一起使用。所有相机设备都保证支持此模板。

另请参阅: ACameraDevice_createCaptureRequest

TEMPLATE_STILL_CAPTURE

创建适用于静态图像捕获的请求。

具体来说,这意味着图像质量优先于帧率。这些请求通常与 ACameraCaptureSession_capture 方法一起使用。所有相机设备都保证支持此模板。

另请参阅: ACameraDevice_createCaptureRequest

TEMPLATE_VIDEO_SNAPSHOT

创建适用于在录制视频时进行静态图像捕获的请求。

具体来说,这意味着在不中断正在进行的录制的情况下最大化图像质量。这些请求通常与 ACameraCaptureSession_capture 方法一起使用,同时基于 TEMPLATE_RECORD 的请求正在与 ACameraCaptureSession_setRepeatingRequest 一起使用。所有相机设备都保证支持此模板。

另请参阅: ACameraDevice_createCaptureRequest

TEMPLATE_ZERO_SHUTTER_LAG

创建适用于零快门延迟静态捕获的请求。

这意味着在不影响预览帧率的情况下最大化图像质量。AE/AWB/AF 应处于自动模式。

另请参阅: ACameraDevice_createCaptureRequest

acamera_metadata_enum_acamera_automotive_lens_facing

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_automotive_lens_facing
属性
ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_FRONT

相机设备面向车身框架的前方。

ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_LEFT

相机设备面向车身框架的左侧。

ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_OTHER

相机设备面向车身框架的外部,但不完全是此枚举定义的外部侧面之一。应用程序应根据 ACAMERA_LENS_POSE_ROTATION 和 ACAMERA_LENS_POSE_TRANSLATION 确定确切的朝向。

另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_REAR

相机设备面向车身框架的后方。

ACAMERA_AUTOMOTIVE_LENS_FACING_EXTERIOR_RIGHT

相机设备面向车身框架的右侧。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_OTHER

相机设备面向车身框架内部,但不完全是此枚举描述的座位之一。应用程序应根据 ACAMERA_LENS_POSE_ROTATION 和 ACAMERA_LENS_POSE_TRANSLATION 确定确切的朝向。

另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_CENTER

相机设备面向第一排的中间座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_LEFT

相机设备面向第一排的左侧座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_1_RIGHT

相机设备面向第一排的右侧座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_CENTER

相机设备面向第二排的中间座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_LEFT

相机设备面向第二排的左侧座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_2_RIGHT

相机设备面向第二排的右侧座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_CENTER

相机设备面向第三排的中间座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_LEFT

相机设备面向第三排的左侧座位。

ACAMERA_AUTOMOTIVE_LENS_FACING_INTERIOR_SEAT_ROW_3_RIGHT

相机设备面向第三排的右侧座位。

acamera_metadata_enum_acamera_automotive_location

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_automotive_location
属性
ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_FRONT

相机设备位于车身框架外部并位于其前侧。

ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_LEFT

相机设备位于车身框架外部并位于其左侧。

ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_OTHER

相机位于车身框架外部,但不完全在此枚举定义的外部位置之一。应用程序应根据 ACAMERA_LENS_POSE_TRANSLATION 确定确切位置。

另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_REAR

相机设备位于车身框架外部并位于其后侧。

ACAMERA_AUTOMOTIVE_LOCATION_EXTERIOR_RIGHT

相机设备位于车身框架外部并位于其右侧。

ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_FRONT

相机设备位于额外车辆车身框架外部并位于其前侧。

ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_LEFT

相机设备位于额外车辆车身外部并位于其左侧。

ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_OTHER

相机设备位于额外车辆上,例如拖车,但不完全位于前、后、左或右侧之一。应用程序应根据 ACAMERA_LENS_POSE_TRANSLATION 确定确切位置。

另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_REAR

相机设备位于额外车辆车身框架外部并位于其后侧。

ACAMERA_AUTOMOTIVE_LOCATION_EXTRA_RIGHT

相机设备位于额外车辆车身外部并位于其右侧。

ACAMERA_AUTOMOTIVE_LOCATION_INTERIOR

相机设备位于车辆驾驶室内。

acamera_metadata_enum_acamera_black_level_lock

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_black_level_lock

acamera_metadata_enum_acamera_color_correction_aberration_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_color_correction_aberration_mode
属性
ACAMERA_COLOR_CORRECTION_ABERRATION_MODE_FAST

畸变校正不会相对传感器原始输出降低捕获速率。

ACAMERA_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY

畸变校正以更高的质量运行,但捕获速率可能会降低(相对于传感器原始输出速率)

ACAMERA_COLOR_CORRECTION_ABERRATION_MODE_OFF

不应用畸变校正。

acamera_metadata_enum_acamera_color_correction_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_color_correction_mode

需要枚举的各种条目的枚举定义。

属性
ACAMERA_COLOR_CORRECTION_MODE_FAST

色彩校正处理不能相对于传感器原始输出降低捕获速率。

可以应用超出指定白平衡管道的高级白平衡调整。

如果 AWB 启用且 ACAMERA_CONTROL_AWB_MODE != OFF,则相机设备将使用最后一帧的 AWB 值(如果 AWB 从未运行过,则使用默认值)。

另请参阅: ACAMERA_CONTROL_AWB_MODE

ACAMERA_COLOR_CORRECTION_MODE_HIGH_QUALITY

色彩校正处理以更高的质量运行,但捕获速率可能会降低(相对于传感器原始输出速率)

可以应用超出指定白平衡管道的高级白平衡调整。

如果 AWB 启用且 ACAMERA_CONTROL_AWB_MODE != OFF,则相机设备将使用最后一帧的 AWB 值(如果 AWB 从未运行过,则使用默认值)。

另请参阅: ACAMERA_CONTROL_AWB_MODE

ACAMERA_COLOR_CORRECTION_MODE_TRANSFORM_MATRIX

使用 ACAMERA_COLOR_CORRECTION_TRANSFORM 矩阵和 ACAMERA_COLOR_CORRECTION_GAINS 进行色彩转换。

必须禁用所有高级白平衡调整(非白平衡管道指定)。

如果 AWB 启用且 ACAMERA_CONTROL_AWB_MODE != OFF,则 TRANSFORM_MATRIX 将被忽略。相机设备将覆盖此值,设置为 FAST 或 HIGH_QUALITY。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM 另请参阅: ACAMERA_CONTROL_AWB_MODE

acamera_metadata_enum_acamera_control_ae_antibanding_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_ae_antibanding_mode
属性
ACAMERA_CONTROL_AE_ANTIBANDING_MODE_50HZ

相机设备将调整曝光时间,以避免 50Hz 照明源造成的条纹问题。

ACAMERA_CONTROL_AE_ANTIBANDING_MODE_60HZ

相机设备将调整曝光时间,以避免 60Hz 照明源造成的条纹问题。

ACAMERA_CONTROL_AE_ANTIBANDING_MODE_AUTO

相机设备将自动根据当前照明条件调整其防条纹例程。如果给定的相机设备支持 AUTO 模式,则这是默认模式。

ACAMERA_CONTROL_AE_ANTIBANDING_MODE_OFF

相机设备不会调整曝光时间以避免条纹问题。

acamera_metadata_enum_acamera_control_ae_lock

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_ae_lock
属性
ACAMERA_CONTROL_AE_LOCK_OFF

自动曝光锁定已禁用;AE 算法可以自由更新其参数。

ACAMERA_CONTROL_AE_LOCK_ON

自动曝光锁定已启用;当锁定激活时,AE 算法不得更新曝光和感光度参数。

在自动曝光锁定时,ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION 设置的更改仍然会生效。

一些罕见的 LEGACY 设备可能不支持此功能,在这种情况下,值将始终被覆盖为 OFF。

另请参阅: ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION

acamera_metadata_enum_acamera_control_ae_lock_available

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_ae_lock_available

acamera_metadata_enum_acamera_control_ae_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_ae_mode
属性
ACAMERA_CONTROL_AE_MODE_OFF

相机设备的自动曝光例程已禁用。

应用程序选择的 ACAMERA_SENSOR_EXPOSURE_TIME、ACAMERA_SENSOR_SENSITIVITY 和 ACAMERA_SENSOR_FRAME_DURATION 将由相机设备使用,如果此相机设备有闪光灯单元,则也会使用 ACAMERA_FLASH_* 字段。

请注意,当 AE 处于 OFF 模式时,自动白平衡 (AWB) 和自动对焦 (AF) 行为依赖于设备。为了在不同设备上获得一致的行为,建议在将 AE 设置为 OFF 之前将 AWB 和 AF 设置为 OFF 模式或锁定 AWB 和 AF。更多详情请参阅 ACAMERA_CONTROL_AWB_MODE、ACAMERA_CONTROL_AF_MODE、ACAMERA_CONTROL_AWB_LOCK 和 ACAMERA_CONTROL_AF_TRIGGER。

LEGACY 设备不支持 OFF 模式,并且会尝试使用此值覆盖为 ON。

另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_CONTROL_AF_TRIGGER 另请参阅: ACAMERA_CONTROL_AWB_LOCK 另请参阅: ACAMERA_CONTROL_AWB_MODE 另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_CONTROL_AE_MODE_ON

相机设备的自动曝光例程处于活动状态,没有闪光灯控制。

应用程序对 ACAMERA_SENSOR_EXPOSURE_TIME、ACAMERA_SENSOR_SENSITIVITY 和 ACAMERA_SENSOR_FRAME_DURATION 的值将被忽略。应用程序可以控制各种 ACAMERA_FLASH_* 字段。

另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_CONTROL_AE_MODE_ON_ALWAYS_FLASH

与 ON 类似,但相机设备也会控制相机的闪光灯单元,在进行静态捕获时始终闪光。

闪光灯可能在预捕获序列期间闪光(由 ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 触发),并且在 ACAMERA_CONTROL_CAPTURE_INTENT 字段设置为 STILL_CAPTURE 的捕获中将始终闪光。

另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

ACAMERA_CONTROL_AE_MODE_ON_AUTO_FLASH

与 ON 类似,但相机设备也会控制相机的闪光灯单元,在低光条件下闪光。

闪光灯可能在预捕获序列期间闪光(由 ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 触发),并且在 ACAMERA_CONTROL_CAPTURE_INTENT 字段设置为 STILL_CAPTURE 的捕获中可能闪光。

另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

ACAMERA_CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE

与 ON_AUTO_FLASH 类似,但具有自动红眼消除功能。

如果相机设备认为有必要,在预捕获序列期间会闪烁红眼消除闪光。

ACAMERA_CONTROL_AE_MODE_ON_EXTERNAL_FLASH

外部闪光灯已打开。

它通知相机设备外部闪光灯已打开,并且应快速重新计算测光(如果连续对焦处于活动状态)以考虑外部闪光灯。否则,此模式的行为类似于 ON。

当外部闪光灯关闭时,应将 AE 模式更改为其他可用的 AE 模式之一。

如果相机设备支持 AE 外部闪光模式,则在相机设备完成 AE 扫描并且在没有闪光灯的情况下太暗时,ACAMERA_CONTROL_AE_STATE 必须为 FLASH_REQUIRED。

另请参阅: ACAMERA_CONTROL_AE_STATE

ACAMERA_CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY

与“ON”类似,但在低光场景中应用额外的亮度提升。

当场景照明条件在 ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE 定义的范围内时,此模式将应用额外的亮度提升。

此模式将根据场景照明条件自动调整应用的低光提升强度。较暗的场景将获得更多提升,而较亮的场景将获得较少提升。

此模式可以忽略设定的目标帧率,以允许捕获更多光线,这可能导致运动变得不流畅。帧率可以低于 ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,但不会低于 10 FPS。此模式还可以增加传感器感光度增益,这可能导致更高的亮度(luma)和色度(chroma)噪声。传感器感光度增益可以超出 ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE 的更高值。此模式还可能应用额外的处理来恢复图像暗区和亮区的细节,并在高感光度增益设置下应用降噪,以平衡感光度和捕获噪声之间的取舍。

此模式仅限于两个输出表面。一种输出表面类型可以是 SurfaceView 或 TextureView。另一种输出表面类型可以是 MediaCodec 或 MediaRecorder。此模式不能与高于 30 FPS 的目标 FPS 范围一起使用。

如果会话配置不受支持,则 CaptureResult 中报告的 AE 模式将是“ON”,而不是“ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY”。

启用此 AE 模式后,CaptureResult 字段 ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE 将指示低光提升何时处于“ACTIVE”或“INACTIVE”状态。默认情况下,ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE 将为“INACTIVE”。

一旦场景照明条件低于 ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE 定义的勒克斯值上限,低光提升就处于“ACTIVE”状态。一旦场景照明条件高于 ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE 定义的勒克斯值上限,此模式将处于“INACTIVE”状态。

另请参阅: ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES 另请参阅: ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE 另请参阅: ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE 另请参阅: ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE

acamera_metadata_enum_acamera_control_ae_precapture_trigger

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_ae_precapture_trigger
属性
ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL

相机设备将取消任何当前活动或已完成的预捕获测光序列,自动曝光例程将返回其初始状态。

ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE

触发器处于空闲状态。

ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START

预捕获测光序列将由相机设备启动。

预捕获触发器的确切效果取决于当前的 AE 模式和状态。

acamera_metadata_enum_acamera_control_ae_state

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_ae_state
属性
ACAMERA_CONTROL_AE_STATE_CONVERGED

AE 对当前场景具有一组良好的控制值。

ACAMERA_CONTROL_AE_STATE_FLASH_REQUIRED

AE 具有一组良好的控制值,但需要闪光才能获得高质量的静态捕获。

ACAMERA_CONTROL_AE_STATE_INACTIVE

AE 已关闭或最近重置。

相机设备打开时,它处于此状态。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

ACAMERA_CONTROL_AE_STATE_LOCKED

AE 已锁定。

ACAMERA_CONTROL_AE_STATE_PRECAPTURE

AE 被要求进行预捕获序列,并且当前正在执行。

可以通过将 ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 设置为 START 来触发预捕获。通过将 ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 设置为 CANCEL,可以取消当前活动或已完成(如果导致相机设备内部 AE 锁定)的预捕获测光序列。

预捕获完成后,AE 将根据需要转换为 CONVERGED 或 FLASH_REQUIRED。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER

ACAMERA_CONTROL_AE_STATE_SEARCHING

AE 尚未获得当前场景的一组良好的控制值。

这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

acamera_metadata_enum_acamera_control_af_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_af_mode
属性
ACAMERA_CONTROL_AF_MODE_AUTO

基本的自动对焦模式。

在此模式下,除非调用自动对焦触发操作,否则镜头不会移动。当该触发器激活时,AF 将转换为 ACTIVE_SCAN,然后转换为扫描结果(FOCUSED 或 NOT_FOCUSED)。

如果镜头不是固定焦距,则始终支持此模式。

使用 ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE 来确定镜头是否为固定焦距。

触发 AF_CANCEL 会将镜头位置重置为默认值,并将 AF 状态设置为 INACTIVE。

另请参阅: ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE

ACAMERA_CONTROL_AF_MODE_CONTINUOUS_PICTURE

在此模式下,AF 算法会不断修改镜头位置,试图提供持续对焦的图像流。

对焦行为应适用于静态图像捕获;这通常意味着尽可能快地对焦。当不涉及 AF 触发器时,AF 算法应从 INACTIVE 状态开始,然后随着其尝试保持对焦,适当地转换为 PASSIVE_SCAN 和 PASSIVE_FOCUSED 状态。当 AF 触发器激活时,如果正在主动扫描,算法应完成其 PASSIVE_SCAN,然后适当地转换为 AF_FOCUSED 或 AF_NOT_FOCUSED,并锁定镜头位置,直到收到取消 AF 触发器。

当 AF 取消触发器激活时,算法应转换回 INACTIVE,然后表现得如同刚刚启动一样。

ACAMERA_CONTROL_AF_MODE_CONTINUOUS_VIDEO

在此模式下,AF 算法会不断修改镜头位置,试图提供持续对焦的图像流。

对焦行为应适用于高质量视频录制;这通常意味着更慢的对焦移动且没有过冲。当不涉及 AF 触发器时,AF 算法应从 INACTIVE 状态开始,然后适当地转换为 PASSIVE_SCAN 和 PASSIVE_FOCUSED 状态。当 AF 触发器激活时,算法应立即适当地转换为 AF_FOCUSED 或 AF_NOT_FOCUSED,并锁定镜头位置,直到收到取消 AF 触发器。

一旦收到取消,算法应转换回 INACTIVE 并恢复被动扫描。请注意,此行为与 CONTINUOUS_PICTURE 不完全相同,因为正在进行的 PASSIVE_SCAN 必须立即取消。

ACAMERA_CONTROL_AF_MODE_EDOF

扩展景深(数字对焦)模式。

相机设备将自动生成具有扩展景深的图像;拍照前无需进行特殊的对焦操作。

AF 触发器被忽略,AF 状态将始终为 INACTIVE。

ACAMERA_CONTROL_AF_MODE_MACRO

微距对焦模式。

在此模式下,除非调用自动对焦触发操作,否则镜头不会移动。当该触发器激活时,AF 将转换为 ACTIVE_SCAN,然后转换为扫描结果(FOCUSED 或 NOT_FOCUSED)。此模式针对对焦非常靠近相机物体的场景进行了优化。

当该触发器激活时,AF 将转换为 ACTIVE_SCAN,然后转换为扫描结果(FOCUSED 或 NOT_FOCUSED)。触发取消 AF 会将镜头位置重置为默认值,并将 AF 状态设置为 INACTIVE。

ACAMERA_CONTROL_AF_MODE_OFF

自动对焦例程不控制镜头;ACAMERA_LENS_FOCUS_DISTANCE 由应用程序控制。

另请参阅: ACAMERA_LENS_FOCUS_DISTANCE

acamera_metadata_enum_acamera_control_af_scene_change

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_af_scene_change
属性
ACAMERA_CONTROL_AF_SCENE_CHANGE_DETECTED

在 AF 区域内检测到场景变化。

ACAMERA_CONTROL_AF_SCENE_CHANGE_NOT_DETECTED

在 AF 区域内未检测到场景变化。

acamera_metadata_enum_acamera_control_af_state

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_af_state
属性
ACAMERA_CONTROL_AF_STATE_ACTIVE_SCAN

AF 正在执行 AF 扫描,因为它是通过 AF 触发器触发的。

仅由 AUTO 或 MACRO AF 模式使用。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED

AF 认为已正确对焦并已锁定对焦。

此状态仅在发送明确的 START AF 触发器(ACAMERA_CONTROL_AF_TRIGGER)后,且已获得良好对焦时达到。

镜头将保持静止,直到 AF 模式(ACAMERA_CONTROL_AF_MODE)更改或向相机设备发送新的 AF 触发器(ACAMERA_CONTROL_AF_TRIGGER)。

另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_CONTROL_AF_TRIGGER

ACAMERA_CONTROL_AF_STATE_INACTIVE

AF 已关闭或尚未尝试扫描/被要求扫描。

相机设备打开时,它处于此状态。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

ACAMERA_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED

AF 未能成功对焦并已锁定对焦。

此状态仅在发送明确的 START AF 触发器(ACAMERA_CONTROL_AF_TRIGGER)后,且无法获得良好对焦时达到。

镜头将保持静止,直到 AF 模式(ACAMERA_CONTROL_AF_MODE)更改或向相机设备发送新的 AF 触发器(ACAMERA_CONTROL_AF_TRIGGER)。

另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_CONTROL_AF_TRIGGER

ACAMERA_CONTROL_AF_STATE_PASSIVE_FOCUSED

AF 当前认为已对焦,但随时可能重新开始扫描。

仅由 CONTINUOUS_* AF 模式使用。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

ACAMERA_CONTROL_AF_STATE_PASSIVE_SCAN

AF 当前正在执行由相机设备在连续自动对焦模式下启动的 AF 扫描。

仅由 CONTINUOUS_* AF 模式使用。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

ACAMERA_CONTROL_AF_STATE_PASSIVE_UNFOCUSED

AF 在没有找到对焦的情况下完成了被动扫描,并且随时可能重新开始扫描。

仅由 CONTINUOUS_* AF 模式使用。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

LEGACY 相机设备不支持此状态。被动扫描完成后,它将始终进入 PASSIVE_FOCUSED。

acamera_metadata_enum_acamera_control_af_trigger

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_af_trigger
属性
ACAMERA_CONTROL_AF_TRIGGER_CANCEL

自动对焦将返回其初始状态,并取消任何当前活动的触发器。

ACAMERA_CONTROL_AF_TRIGGER_IDLE

触发器处于空闲状态。

ACAMERA_CONTROL_AF_TRIGGER_START

自动对焦现在将触发。

acamera_metadata_enum_acamera_control_autoframing

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_autoframing
属性
ACAMERA_CONTROL_AUTOFRAMING_OFF

禁用自动构图。

ACAMERA_CONTROL_AUTOFRAMING_ON

启用自动构图,以使人物保持在画框的视野内。

acamera_metadata_enum_acamera_control_autoframing_available

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_autoframing_available

acamera_metadata_enum_acamera_control_autoframing_state

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_autoframing_state
属性
ACAMERA_CONTROL_AUTOFRAMING_STATE_CONVERGED

自动构图已达到稳定状态(帧/视野未被调整)。如果场景发生变化,状态可能会变回 FRAMING。

ACAMERA_CONTROL_AUTOFRAMING_STATE_FRAMING

自动构图中 - 正在进行缩放或平移。

ACAMERA_CONTROL_AUTOFRAMING_STATE_INACTIVE

自动构图处于非活动状态。

acamera_metadata_enum_acamera_control_awb_lock

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_awb_lock
属性
ACAMERA_CONTROL_AWB_LOCK_OFF

自动白平衡锁定已禁用;如果在 AUTO 模式下,AWB 算法可以自由更新其参数。

ACAMERA_CONTROL_AWB_LOCK_ON

自动白平衡锁定已启用;AWB 算法在锁定激活时不会更新其参数。

acamera_metadata_enum_acamera_control_awb_lock_available

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_awb_lock_available

acamera_metadata_enum_acamera_control_awb_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_awb_mode
属性
ACAMERA_CONTROL_AWB_MODE_AUTO

相机设备的自动白平衡例程处于活动状态。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT

相机设备的自动白平衡例程已禁用;相机设备使用阴天日光作为假定的场景照明进行白平衡。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_DAYLIGHT

相机设备的自动白平衡例程已禁用;相机设备使用日光作为假定的场景照明进行白平衡。

虽然确切的白平衡转换取决于相机设备,但它们将近似匹配 CIE 标准光源 D65。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_FLUORESCENT

相机设备的自动白平衡例程已禁用;相机设备使用荧光灯作为假定的场景照明进行白平衡。

虽然确切的白平衡转换取决于相机设备,但它们将近似匹配 CIE 标准光源 F2。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_INCANDESCENT

相机设备的自动白平衡例程已禁用;相机设备使用白炽灯作为假定的场景照明进行白平衡。

虽然确切的白平衡转换取决于相机设备,但它们将近似匹配 CIE 标准光源 A。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_OFF

相机设备的自动白平衡例程已禁用。

应用程序选择的色彩转换矩阵(ACAMERA_COLOR_CORRECTION_TRANSFORM)和增益(ACAMERA_COLOR_CORRECTION_GAINS)由相机设备用于手动白平衡控制。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_SHADE

相机设备的自动白平衡例程已禁用;相机设备使用阴影光作为假定的场景照明进行白平衡。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_TWILIGHT

相机设备的自动白平衡例程已禁用;相机设备使用黄昏光作为假定的场景照明进行白平衡。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

ACAMERA_CONTROL_AWB_MODE_WARM_FLUORESCENT

相机设备的自动白平衡例程已禁用;相机设备使用暖色荧光灯作为假定的场景照明进行白平衡。

虽然确切的白平衡转换取决于相机设备,但它们将近似匹配 CIE 标准光源 F4。

应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORM 和 ACAMERA_COLOR_CORRECTION_GAINS 的值将被忽略。对于支持 MANUAL_POST_PROCESSING 功能的设备,相机设备用于转换和增益的值将在此请求的捕获结果中提供。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM

acamera_metadata_enum_acamera_control_awb_state

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_awb_state
属性
ACAMERA_CONTROL_AWB_STATE_CONVERGED

AWB 对当前场景具有一组良好的控制值。

ACAMERA_CONTROL_AWB_STATE_INACTIVE

AWB 不处于自动模式,或尚未开始测光。

相机设备打开时,它处于此状态。这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

ACAMERA_CONTROL_AWB_STATE_LOCKED

AWB 已锁定。

ACAMERA_CONTROL_AWB_STATE_SEARCHING

AWB 尚未获得当前场景的一组良好的控制值。

这是一个瞬态,相机设备可能不会在捕获结果中报告此状态。

acamera_metadata_enum_acamera_control_capture_intent

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_capture_intent
属性
ACAMERA_CONTROL_CAPTURE_INTENT_CUSTOM

此请求的目标不属于其他类别。相机设备将默认为预览类行为。

ACAMERA_CONTROL_CAPTURE_INTENT_MANUAL

此请求用于手动捕获用例,其中应用程序希望直接控制捕获参数。

例如,应用程序可能希望手动控制 ACAMERA_SENSOR_EXPOSURE_TIME、ACAMERA_SENSOR_SENSITIVITY 等。

另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_CONTROL_CAPTURE_INTENT_MOTION_TRACKING

此请求用于运动跟踪用例,其中应用程序将使用相机和惯性传感器数据在世界中定位和跟踪对象。

相机设备的自动曝光例程会将相机的曝光时间限制在不超过 20 毫秒,以最大程度地减少运动模糊。

ACAMERA_CONTROL_CAPTURE_INTENT_PREVIEW

此请求用于预览类用例。

预捕获触发器可用于启动带有闪光灯的测序序列。

ACAMERA_CONTROL_CAPTURE_INTENT_STILL_CAPTURE

此请求用于静态捕获类用例。

如果闪光灯单元处于自动控制下,则可能根据需要闪光。

ACAMERA_CONTROL_CAPTURE_INTENT_VIDEO_RECORD

此请求用于视频录制用例。

ACAMERA_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT

此请求用于视频快照(录制视频时的静态图像)用例。

相机设备应在不中断视频录制帧率的情况下,以尽可能最高的质量(考虑到其他设置)捕获图像。

ACAMERA_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG

此请求用于 ZSL 用例;应用程序将流式传输全分辨率图像,并在稍后重新处理一个或多个图像以进行最终捕获。

acamera_metadata_enum_acamera_control_effect_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_effect_mode
属性
ACAMERA_CONTROL_EFFECT_MODE_AQUA

一种“水色”效果,在图像中添加蓝色调。

ACAMERA_CONTROL_EFFECT_MODE_BLACKBOARD

一种“黑板”效果,图像通常显示为黑色区域,带有白色或灰色细节。

ACAMERA_CONTROL_EFFECT_MODE_MONO

一种“单色”效果,图像映射到单一颜色。

这通常是灰度。

ACAMERA_CONTROL_EFFECT_MODE_NEGATIVE

一种“照片负片”效果,图像的颜色被反转。

ACAMERA_CONTROL_EFFECT_MODE_OFF

不应用任何色彩效果。

ACAMERA_CONTROL_EFFECT_MODE_POSTERIZE

一种“海报化”效果,图像使用离散的色调区域,而不是连续的色调渐变。

ACAMERA_CONTROL_EFFECT_MODE_SEPIA

一种“怀旧”效果,图像映射到暖灰色、红色和棕色调。

ACAMERA_CONTROL_EFFECT_MODE_SOLARIZE

一种“曝光过度”(萨巴蒂尔效应)效果,图像的色调完全或部分反转。

ACAMERA_CONTROL_EFFECT_MODE_WHITEBOARD

一种“白板”效果,图像通常显示为白色区域,带有黑色或灰色细节。

acamera_metadata_enum_acamera_control_enable_zsl

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_enable_zsl
属性
ACAMERA_CONTROL_ENABLE_ZSL_FALSE

ACAMERA_CONTROL_CAPTURE_INTENT == STILL_CAPTURE 的请求必须在之前的请求之后捕获。

另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

ACAMERA_CONTROL_ENABLE_ZSL_TRUE

ACAMERA_CONTROL_CAPTURE_INTENT == STILL_CAPTURE 的请求可能在之前的请求之前或之后捕获。

另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

acamera_metadata_enum_acamera_control_extended_scene_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_extended_scene_mode
属性
ACAMERA_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS

散景效果不能相对传感器原始输出降低捕获速率,并且该效果应用于所有不超过最大流维度的已处理流。如果性能和功耗是优先考虑的因素(例如视频录制),则应使用此模式。

ACAMERA_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE

当捕获意图为 STILL_CAPTURE 时,所有非原始流(包括 YUV、JPEG 和 IMPLEMENTATION_DEFINED)启用高质量散景模式。由于额外的图像处理,此模式可能会为非原始流引入额外的停滞。此模式应用于高质量静态捕获用例。

ACAMERA_CONTROL_EXTENDED_SCENE_MODE_DISABLED

扩展场景模式已禁用。

acamera_metadata_enum_acamera_control_low_light_boost_state

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_low_light_boost_state
属性
ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE

AE 模式“ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY”已启用并应用。

ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE_INACTIVE

AE 模式“ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY”已启用但未应用。

acamera_metadata_enum_acamera_control_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_mode
属性
ACAMERA_CONTROL_MODE_AUTO

使用每个独立 3A 例程的设置。

手动控制捕获参数已禁用。除了 sceneMode 之外,ACAMERA_CONTROL_* 中的所有控制都生效。

ACAMERA_CONTROL_MODE_OFF

完全由应用程序控制管道。

设备测光和对焦 (3A) 例程的所有控制都已禁用,并且 ACAMERA_CONTROL_* 中的其他设置均无效,但相机设备可以使用 ACAMERA_CONTROL_CAPTURE_INTENT 为不允许手动控制或相机 API 未公开的处理块选择后处理值除外。

但是,相机设备的 3A 例程可能会继续收集统计数据并更新其内部状态,以便在切换到 AUTO 模式时,可以立即应用良好的控制值。

另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

ACAMERA_CONTROL_MODE_OFF_KEEP_STATE

与 OFF 模式相同,但此捕获不会被相机设备后台自动曝光、自动白平衡和自动对焦算法 (3A) 用来更新其统计数据。

具体来说,3A 例程被锁定到来自带有 AUTO、OFF 或 USE_SCENE_MODE 的请求设置的最后值,并且从 OFF_KEEP_STATE 的手动捕获中收集的任何统计数据或状态更新都将被相机设备丢弃。

ACAMERA_CONTROL_MODE_USE_EXTENDED_SCENE_MODE

使用特定的扩展场景模式。

当扩展场景模式开启时,相机设备可能会覆盖某些控制参数,例如 targetFpsRange、AE、AWB 和 AF 模式,以实现最佳的功耗和质量权衡。仅保证支持 LIMITED 硬件级别的强制流组合。

此设置只能在支持扩展场景模式时使用(即 android.control.availableExtendedSceneModes 包含除 DISABLED 之外的一些模式)。

ACAMERA_CONTROL_MODE_USE_SCENE_MODE

使用特定的场景模式。

启用此模式会禁用 control.aeMode、control.awbMode 和 control.afMode 控制;相机设备在 USE_SCENE_MODE 激活时将忽略这些设置(FACE_PRIORITY 场景模式除外)。其他控制项仍然有效。此设置只能在支持场景模式时使用(即 ACAMERA_CONTROL_AVAILABLE_SCENE_MODES 包含除 DISABLED 之外的一些模式)。

对于 BOKEH 等扩展场景模式,请改用 USE_EXTENDED_SCENE_MODE。

另请参阅: ACAMERA_CONTROL_AVAILABLE_SCENE_MODES

acamera_metadata_enum_acamera_control_scene_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_scene_mode
属性
ACAMERA_CONTROL_SCENE_MODE_ACTION

针对快速移动物体的照片进行了优化。

类似于 SPORTS。

ACAMERA_CONTROL_SCENE_MODE_BARCODE

针对精确捕获条形码照片进行了优化,以供希望读取条形码值的相机应用程序使用。

ACAMERA_CONTROL_SCENE_MODE_BEACH

针对明亮的室外海滩场景进行了优化。

ACAMERA_CONTROL_SCENE_MODE_CANDLELIGHT

针对主要光源是蜡烛的昏暗环境进行了优化。

ACAMERA_CONTROL_SCENE_MODE_DISABLED

表示特定捕获请求未设置场景模式。

ACAMERA_CONTROL_SCENE_MODE_FACE_PRIORITY

如果存在人脸检测支持,则使用人脸检测数据进行自动对焦、自动白平衡和自动曝光例程。

如果人脸检测统计信息被禁用(即 ACAMERA_STATISTICS_FACE_DETECT_MODE 设置为 OFF),此模式仍应正常工作(但不会将人脸检测统计信息返回给框架)。

与其他场景模式不同,设置 FACE_PRIORITY 时,ACAMERA_CONTROL_AE_MODE、ACAMERA_CONTROL_AWB_MODE 和 ACAMERA_CONTROL_AF_MODE 仍处于活动状态。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_CONTROL_AWB_MODE 另请参阅: ACAMERA_STATISTICS_FACE_DETECT_MODE

ACAMERA_CONTROL_SCENE_MODE_FIREWORKS

针对夜间烟花照片进行了优化。

ACAMERA_CONTROL_SCENE_MODE_HDR

开启设备特定的高动态范围 (HDR) 模式。

在此场景模式下,相机设备捕获的图像可以在最终图像中显示更大范围的场景照明水平。例如,当拍摄明亮窗户前的物体时,使用 HDR 模式时,物体和窗户外的场景都可能清晰可见,而在正常 AUTO 模式下,其中一个或另一个可能曝光不足。作为权衡,HDR 模式通常捕获单张图像需要更长的时间,没有用户控制,并且可能会根据使用的 HDR 方法产生其他伪影。

因此,HDR 捕获的速度比常规捕获慢得多。

在此模式下,在 LIMITED 或 FULL 设备上,当以 STILL_CAPTURE 的 ACAMERA_CONTROL_CAPTURE_INTENT 发出请求时,相机设备将使用高动态范围捕获技术捕获图像。在 LEGACY 设备上,以 JPEG 格式输出为目标的捕获将使用 HDR 捕获,并且捕获意图不相关。

HDR 捕获可能涉及设备内部捕获一系列图像并将它们合并为一个,或者可能涉及设备使用专门的高动态范围捕获硬件。在所有情况下,在 HDR 模式下提交的捕获请求都会生成一张图像。

由于生成 HDR 图像通常需要大量的后处理,因此 LIMITED/FULL 设备的 HDR 捕获仅支持 YUV、PRIVATE 和 JPEG 输出,而 LEGACY HDR 捕获仅支持 JPEG 输出。不支持将 RAW 输出用于 HDR 捕获。

某些设备也可能支持始终开启的 HDR,它以全帧率应用 HDR 处理。对于这些设备,除了 STILL_CAPTURE 之外的其他意图也会产生 HDR 输出,且与正常操作相比,帧率不受影响,尽管质量可能低于 STILL_CAPTURE 意图。

如果 SCENE_MODE_HDR 与不受支持的输出类型或捕获意图一起使用,则捕获的图像将如同未启用 SCENE_MODE 一样。

另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

ACAMERA_CONTROL_SCENE_MODE_LANDSCAPE

针对远处宏观物体的照片进行了优化。

ACAMERA_CONTROL_SCENE_MODE_NIGHT

针对低光环境进行了优化。

ACAMERA_CONTROL_SCENE_MODE_NIGHT_PORTRAIT

针对低光环境下的人物静态照片进行了优化。

ACAMERA_CONTROL_SCENE_MODE_PARTY

针对昏暗、多人移动的室内环境进行了优化。

ACAMERA_CONTROL_SCENE_MODE_PORTRAIT

针对人物静态照片进行了优化。

ACAMERA_CONTROL_SCENE_MODE_SNOW

针对包含雪的明亮室外环境进行了优化。

ACAMERA_CONTROL_SCENE_MODE_SPORTS

针对快速移动人物的照片进行了优化。

类似于 ACTION。

ACAMERA_CONTROL_SCENE_MODE_STEADYPHOTO

针对避免由于设备少量移动(例如,手抖)造成的模糊照片进行了优化。

ACAMERA_CONTROL_SCENE_MODE_SUNSET

针对日落场景进行了优化。

ACAMERA_CONTROL_SCENE_MODE_THEATRE

针对昏暗、闪光灯必须保持关闭的室内环境进行了优化。

acamera_metadata_enum_acamera_control_settings_override

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_settings_override
属性
ACAMERA_CONTROL_SETTINGS_OVERRIDE_OFF

将 CaptureRequest 设置应用于相机设备时,没有比其他键更早应用的键。这是默认值。

ACAMERA_CONTROL_SETTINGS_OVERRIDE_ZOOM

缩放相关键在 CaptureRequest 中比其他键更早应用。缩放相关键为

  • ACAMERA_CONTROL_ZOOM_RATIO
  • ACAMERA_SCALER_CROP_REGION
  • ACAMERA_CONTROL_AE_REGIONS
  • ACAMERA_CONTROL_AWB_REGIONS
  • ACAMERA_CONTROL_AF_REGIONS

尽管 ACAMERA_CONTROL_AE_REGIONS、ACAMERA_CONTROL_AWB_REGIONS 和 ACAMERA_CONTROL_AF_REGIONS 与缩放没有直接关系,但应用程序通常会将这些区域与 ACAMERA_SCALER_CROP_REGION 一起缩放,以便在当前视野内保持一致的映射。在这方面,它们与 ACAMERA_SCALER_CROP_REGION 和 ACAMERA_CONTROL_ZOOM_RATIO 有关。

另请参阅: ACAMERA_CONTROL_AE_REGIONS 另请参阅: ACAMERA_CONTROL_AF_REGIONS 另请参阅: ACAMERA_CONTROL_AWB_REGIONS 另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_SCALER_CROP_REGION

acamera_metadata_enum_acamera_control_video_stabilization_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_control_video_stabilization_mode
属性
ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_OFF

视频防抖已禁用。

ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_ON

视频防抖已启用。

ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION

预览防抖,其中预览以及所有其他非 RAW 流都以相同的防抖质量进行稳定,已启用。此模式旨在为客户端提供“所见即所得”的效果。在此模式下,对于给定的缩放比例/裁剪区域,视野缩减(从左、右、上、下各 10%)最多为水平和垂直方向的 20%。结果视野也将是所有已处理流(具有相同的纵横比)相同的。

acamera_metadata_enum_acamera_depth_available_depth_stream_configurations

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_depth_available_depth_stream_configurations

acamera_metadata_enum_acamera_depth_available_depth_stream_configurations_maximum_resolution

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_depth_available_depth_stream_configurations_maximum_resolution

acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations

acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations_maximum_resolution

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations_maximum_resolution

acamera_metadata_enum_acamera_depth_depth_is_exclusive

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_depth_depth_is_exclusive

acamera_metadata_enum_acamera_distortion_correction_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_distortion_correction_mode
属性
ACAMERA_DISTORTION_CORRECTION_MODE_FAST

应用镜头畸变校正,同时不相对于传感器输出降低帧率。如果畸变校正会相对于传感器降低帧率,则此模式可能与 OFF 相同。

ACAMERA_DISTORTION_CORRECTION_MODE_HIGH_QUALITY

应用高质量畸变校正,但可能会相对于传感器输出降低帧率。

ACAMERA_DISTORTION_CORRECTION_MODE_OFF

不应用畸变校正。

acamera_metadata_enum_acamera_edge_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_edge_mode
属性
ACAMERA_EDGE_MODE_FAST

应用边缘增强,质量级别不会相对于传感器输出降低帧率。如果边缘增强会相对于传感器降低帧率,则此模式可能与 OFF 相同。

ACAMERA_EDGE_MODE_HIGH_QUALITY

应用高质量边缘增强,但可能会降低输出帧率。

ACAMERA_EDGE_MODE_OFF

不应用边缘增强。

ACAMERA_EDGE_MODE_ZERO_SHUTTER_LAG

根据分辨率,对不同输出流应用不同级别的边缘增强。最大录制分辨率(请参阅 ACameraDevice_createCaptureSession)或更低分辨率的流应用边缘增强,而更高分辨率的流不应用边缘增强。针对低分辨率流的边缘增强级别已调整,以确保帧率不受影响,并且质量等于或优于 FAST(因为它仅应用于较低分辨率的输出,质量可能比 FAST 提高)。

此模式旨在供使用 YUV 或 PRIVATE 再处理的零快门延迟模式下的应用程序使用,在该模式下,应用程序将高分辨率中间缓冲区连续捕获到循环缓冲区中,用户拍照时通过再处理从该缓冲区生成最终图像。对于此类用例,高分辨率缓冲区必须不应用边缘增强以最大化预览效率并避免再处理时双重应用增强,而低分辨率缓冲区(通常用于录制或预览)需要应用边缘增强以获得合理的预览质量。

支持 YUV_REPROCESSING 或 PRIVATE_REPROCESSING 功能的设备(ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 列出了其中任何一个功能)保证支持此模式,并且它将是 CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG 模板的默认模式。

另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

acamera_metadata_enum_acamera_flash_info_available

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_flash_info_available

acamera_metadata_enum_acamera_flash_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_flash_mode
属性
ACAMERA_FLASH_MODE_OFF

此捕获不闪光。

ACAMERA_FLASH_MODE_SINGLE

如果闪光灯可用且已充电,则为此捕获闪光。

ACAMERA_FLASH_MODE_TORCH

将闪光灯转为持续开启。

acamera_metadata_enum_acamera_flash_state

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_flash_state
属性
ACAMERA_FLASH_STATE_CHARGING

闪光灯正在充电,无法闪光。

ACAMERA_FLASH_STATE_FIRED

此捕获已闪光。

ACAMERA_FLASH_STATE_PARTIAL

闪光灯部分照亮了此帧。

这通常是由于上一帧或下一帧闪光,并且由于硬件限制,闪光灯照射到此捕获中。

ACAMERA_FLASH_STATE_READY

闪光灯已准备就绪。

ACAMERA_FLASH_STATE_UNAVAILABLE

相机上没有闪光灯。

acamera_metadata_enum_acamera_heic_available_heic_stream_configurations

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_heic_available_heic_stream_configurations

acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution

acamera_metadata_enum_acamera_hot_pixel_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_hot_pixel_mode
属性
ACAMERA_HOT_PIXEL_MODE_FAST

应用坏点校正,同时不相对于传感器原始输出降低帧率。

坏点映射可能在 ACAMERA_STATISTICS_HOT_PIXEL_MAP 中返回。

另请参阅: ACAMERA_STATISTICS_HOT_PIXEL_MAP

ACAMERA_HOT_PIXEL_MODE_HIGH_QUALITY

应用高质量坏点校正,但可能会相对于传感器原始输出降低帧率。

坏点映射可能在 ACAMERA_STATISTICS_HOT_PIXEL_MAP 中返回。

另请参阅: ACAMERA_STATISTICS_HOT_PIXEL_MAP

ACAMERA_HOT_PIXEL_MODE_OFF

不应用坏点校正。

对于此选项,帧率不得相对于传感器原始输出降低。

坏点映射可能在 ACAMERA_STATISTICS_HOT_PIXEL_MAP 中返回。

另请参阅: ACAMERA_STATISTICS_HOT_PIXEL_MAP

acamera_metadata_enum_acamera_info_supported_hardware_level

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_info_supported_hardware_level
属性
ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_3

除了 FULL 级别功能外,此相机设备还支持 YUV 再处理和 RAW 数据捕获。

文档中 LEVEL_3RAWFULLLEGACYLIMITED表中列出的流配置保证受到支持。

保证支持以下附加功能:

  • YUV_REPROCESSING 功能(ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 YUV_REPROCESSING
  • RAW 功能(ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 RAW

另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL

此摄像头设备由连接到此 Android 设备的外部摄像头提供支持。

此设备的功能与 LIMITED 级别设备相同,但以下例外情况除外:

  • 此设备可能不会报告镜头/传感器相关信息,例如:
    • ACAMERA_LENS_FOCAL_LENGTH
    • ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE
    • ACAMERA_SENSOR_INFO_PHYSICAL_SIZE
    • ACAMERA_SENSOR_INFO_WHITE_LEVEL
    • ACAMERA_SENSOR_BLACK_LEVEL_PATTERN
    • ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
    • ACAMERA_SENSOR_ROLLING_SHUTTER_SKEW
  • 设备会报告 ACAMERA_SENSOR_ORIENTATION 的值为 0。
  • 此设备对稳定帧速率的保证程度较低,因为帧速率部分取决于所使用的外部摄像头。

另请参阅: ACAMERA_LENS_FOCAL_LENGTH 另请参阅: ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE 另请参阅: ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 另请参阅: ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT 另请参阅: ACAMERA_SENSOR_INFO_PHYSICAL_SIZE 另请参阅: ACAMERA_SENSOR_INFO_WHITE_LEVEL 另请参阅: ACAMERA_SENSOR_ORIENTATION 另请参阅: ACAMERA_SENSOR_ROLLING_SHUTTER_SKEW

ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_FULL

此摄像头设备能够支持高级影像应用。

文档中 FULLLEGACYLIMITED 表格 中列出的流配置保证受支持。

FULL 设备支持以下功能:

  • BURST_CAPTURE 功能(ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 BURST_CAPTURE
  • 逐帧控制(ACAMERA_SYNC_MAX_LATENCY == PER_FRAME_CONTROL)
  • 手动传感器控制(ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 MANUAL_SENSOR
  • 手动后处理控制(ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 MANUAL_POST_PROCESSING
  • ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE 中定义的所需曝光时间范围
  • ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION 中定义的所需 maxFrameDuration

注意:在 API 级别 23 之前,FULL 设备也支持任意裁剪区域(ACAMERA_SCALER_CROPPING_TYPE == FREEFORM);此要求在 API 级别 23 中放宽,FULL 设备可能仅支持 CENTERED 裁剪。

另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 另请参阅: ACAMERA_SCALER_CROPPING_TYPE 另请参阅: ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE 另请参阅: ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION 另请参阅: ACAMERA_SYNC_MAX_LATENCY

ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY

此摄像头设备以向后兼容模式运行。

仅支持文档中 LEGACY 表格 中列出的流配置。

LEGACY 设备不支持逐帧控制、手动传感器控制、手动后处理、任意裁剪区域,并且放宽了性能限制。LEGACY 设备在 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 中不会列出除 BACKWARD_COMPATIBLE 之外的任何额外功能。

此外,ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 在 LEGACY 设备上不起作用。相反,每个包含 JPEG 格式输出目标的请求都被视为触发静止图像捕获,并在内部执行预捕获触发。如果设备上存在闪光灯且 AE 模式设置为启用闪光灯,这可能会在预捕获期间触发闪光灯进行测光,然后在最终捕获时触发闪光灯。

最初搭载 Android Q 或更高版本出货的设备将不包含任何 LEGACY 级别设备。

另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED

此摄像头设备不具备足够的功能成为 FULL 或更高级别的设备。

仅保证支持文档中 LEGACYLIMITED 表格 中列出的流配置。

所有 LIMITED 设备都支持 BACKWARDS_COMPATIBLE 功能,表示基本支持彩色图像捕获。唯一例外是,如果设备只能输出深度测量而不能输出彩色图像,则它可能只支持 DEPTH_OUTPUT 功能。

LIMITED 及以上级别设备在捕获高质量静止图像之前,需要使用 ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 来锁定曝光测光(对于带有闪光灯的摄像头,还需要计算闪光灯功率)。

仅列出 BACKWARDS_COMPATIBLE 功能的 LIMITED 设备只需支持全自动操作和后处理(ACAMERA_CONTROL_AE_MODE、ACAMERA_CONTROL_AF_MODE 或 ACAMERA_CONTROL_AWB_MODE 不支持 OFF

LIMITED 级别设备可能选择性地支持额外功能,可以在 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 中检查。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_CONTROL_AWB_MODE 另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations

acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations_maximum_resolution

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations_maximum_resolution

acamera_metadata_enum_acamera_lens_facing

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_lens_facing
属性
ACAMERA_LENS_FACING_BACK

摄像头设备面向与设备屏幕相反的方向。

ACAMERA_LENS_FACING_EXTERNAL

摄像头设备是外部摄像头,相对于设备屏幕没有固定的朝向。

ACAMERA_LENS_FACING_FRONT

摄像头设备面向与设备屏幕相同的方向。

acamera_metadata_enum_acamera_lens_info_focus_distance_calibration

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_lens_info_focus_distance_calibration
属性
ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE

镜头焦距距离以屈光度测量。

但是,在不同场合将镜头设置为相同的焦距距离可能会导致不同的实际焦距距离,具体取决于设备方向、对焦机制的使用年限以及设备温度等因素。

ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED

镜头焦距距离以屈光度测量,并且已校准。

镜头机制经过校准,以便在多次使用中能够以较高的精度重复设置相同的焦距距离,并且焦距距离与最佳对焦平面的实际物理距离相符。

ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED

镜头焦距距离不准确,并且用于 ACAMERA_LENS_FOCUS_DISTANCE 的单位不对应任何物理单位。

在不同场合将镜头设置为相同的焦距距离可能会导致不同的实际焦距距离,具体取决于设备方向、对焦机制的使用年限以及设备温度等因素。焦距距离值仍将在 [0, ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE] 范围内,其中 0 表示最远焦距。

另请参阅: ACAMERA_LENS_FOCUS_DISTANCE 另请参阅: ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE

acamera_metadata_enum_acamera_lens_optical_stabilization_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_lens_optical_stabilization_mode
属性
ACAMERA_LENS_OPTICAL_STABILIZATION_MODE_OFF

光学防抖不可用。

ACAMERA_LENS_OPTICAL_STABILIZATION_MODE_ON

光学防抖已启用。

acamera_metadata_enum_acamera_lens_pose_reference

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_lens_pose_reference
属性
ACAMERA_LENS_POSE_REFERENCE_AUTOMOTIVE

ACAMERA_LENS_POSE_TRANSLATION 的值相对于汽车传感器坐标系的原点,该原点位于后轴中心。

另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_LENS_POSE_REFERENCE_GYROSCOPE

ACAMERA_LENS_POSE_TRANSLATION 的值相对于此 Android 设备主陀螺仪的位置。

另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_LENS_POSE_REFERENCE_PRIMARY_CAMERA

ACAMERA_LENS_POSE_TRANSLATION 的值相对于与此摄像头朝向相同方向的最大摄像头设备的中心点。

这是 Android P 之前的 API 级别的默认值。

另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_LENS_POSE_REFERENCE_UNDEFINED

摄像头设备无法足够精确地表示 ACAMERA_LENS_POSE_TRANSLATION 和 ACAMERA_LENS_POSE_ROTATION 的值。一个例子是可折叠手机封面上的摄像头设备:为了测量姿态平移和旋转,需要某种类型的铰链位置传感器。

ACAMERA_LENS_POSE_TRANSLATION 的值必须全部为零,而 ACAMERA_LENS_POSE_ROTATION 的值必须与其默认朝向匹配。

另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION

acamera_metadata_enum_acamera_lens_state

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_lens_state
属性
ACAMERA_LENS_STATE_MOVING

一个或多个镜头参数(ACAMERA_LENS_FOCAL_LENGTH、ACAMERA_LENS_FOCUS_DISTANCE、ACAMERA_LENS_FILTER_DENSITY 或 ACAMERA_LENS_APERTURE)当前正在更改。

另请参阅: ACAMERA_LENS_APERTURE 另请参阅: ACAMERA_LENS_FILTER_DENSITY 另请参阅: ACAMERA_LENS_FOCAL_LENGTH 另请参阅: ACAMERA_LENS_FOCUS_DISTANCE

ACAMERA_LENS_STATE_STATIONARY

镜头参数(ACAMERA_LENS_FOCAL_LENGTH、ACAMERA_LENS_FOCUS_DISTANCE、ACAMERA_LENS_FILTER_DENSITY 和 ACAMERA_LENS_APERTURE)未更改。

另请参阅: ACAMERA_LENS_APERTURE 另请参阅: ACAMERA_LENS_FILTER_DENSITY 另请参阅: ACAMERA_LENS_FOCAL_LENGTH 另请参阅: ACAMERA_LENS_FOCUS_DISTANCE

acamera_metadata_enum_acamera_logical_multi_camera_sensor_sync_type

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_logical_multi_camera_sensor_sync_type
属性
ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE

使用软件机制同步物理摄像头。因此,物理流中图像的时间戳仅是图像传感器曝光开始时间的近似值。

ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED

摄像头设备支持硬件级别的帧时间戳同步,并且物理流图像的时间戳准确反映其曝光开始时间。

acamera_metadata_enum_acamera_noise_reduction_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_noise_reduction_mode
属性
ACAMERA_NOISE_REDUCTION_MODE_FAST

在不降低相对于传感器输出的帧速率的情况下应用降噪。如果降噪会降低相对于传感器的帧速率,它可能与 OFF 相同。

ACAMERA_NOISE_REDUCTION_MODE_HIGH_QUALITY

应用高质量降噪,但可能会降低相对于传感器输出的帧速率。

ACAMERA_NOISE_REDUCTION_MODE_MINIMAL

在不降低相对于传感器输出的帧速率的情况下应用 MINIMAL 降噪。

ACAMERA_NOISE_REDUCTION_MODE_OFF

未应用降噪。

ACAMERA_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG

根据分辨率对不同的输出流应用不同级别的降噪。对于最大录制分辨率(参见 ACameraDevice_createCaptureSession)或更低分辨率的流,应用降噪,而更高分辨率的流应用 MINIMAL(如果支持)或不应用降噪(如果不支持 MINIMAL)。对于低分辨率流,降噪程度经过调整,以便帧速率不受影响,并且质量等于或优于 FAST(因为它仅应用于较低分辨率输出,质量可能会从 FAST 模式提高)。

此模式旨在供使用 YUV 或 PRIVATE 后处理以零快门延迟模式运行的应用使用,这些应用将高分辨率中间缓冲区连续捕获到循环缓冲区中,并在用户拍照时通过后处理从该缓冲区生成最终图像。对于此类用例,高分辨率缓冲区不得应用降噪,以最大限度地提高预览效率并避免在后处理时过度应用降噪过滤,而低分辨率缓冲区(通常用于录制或预览)需要应用降噪以获得合理的预览质量。

支持 YUV_REPROCESSING 或 PRIVATE_REPROCESSING 功能的设备(ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 列出了其中任何一个功能)保证支持此模式,并且它将是 CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG 模板的默认模式。

另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

acamera_metadata_enum_acamera_request_available_capabilities

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_request_available_capabilities
属性
ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE

每个摄像头设备都支持的最小功能集(无论 ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL 如何)。

所有正常设备都列出此功能,表示摄像头设备的功能集与较旧的 android.hardware.Camera API 的基线要求相当。

具有 DEPTH_OUTPUT 功能的设备可能不列出此功能,表明它们仅支持深度测量,不支持标准彩色输出。

另请参阅: ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE

当后处理设置设置为 FAST 时,摄像头设备支持以 >= 20 帧/秒 的速率捕获高分辨率图像,至少支持未压缩的 YUV 格式。此外,所有小于 24 兆像素的图像分辨率都可以以 >= 10 帧/秒 的速率捕获。这里,“高分辨率”是指至少 8 兆像素,或设备的最大分辨率(取较小者)。

更具体地说,这意味着 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中列出的至少一个输出 AIMAGE_FORMAT_YUV_420_888 尺寸大于或等于上面定义的高分辨率,并且可以以至少 20 fps 的速率捕获。对于 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中列出的最大 AIMAGE_FORMAT_YUV_420_888 尺寸,如果尺寸小于 24 兆像素,摄像头设备可以以至少 10 帧/秒 的速率捕获此尺寸。此外,ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES 条目列出至少一个 FPS 范围,其中最小 FPS >= 1 / 最大 YUV_420_888 尺寸的 minimumFrameDuration。

如果设备支持 AIMAGE_FORMAT_RAW10AIMAGE_FORMAT_RAW12AIMAGE_FORMAT_Y8 格式,则它们也可以以与最大尺寸 YUV_420_888 分辨率相同的速率捕获。

此外,ACAMERA_SYNC_MAX_LATENCY 字段保证具有介于 0 到 4 之间(含)的值。ACAMERA_CONTROL_AE_LOCK_AVAILABLE 和 ACAMERA_CONTROL_AWB_LOCK_AVAILABLE 也保证为 true,因此在这两个锁开启的情况下进行连拍可产生一致的图像输出。

另请参阅: ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES 另请参阅: ACAMERA_CONTROL_AE_LOCK_AVAILABLE 另请参阅: ACAMERA_CONTROL_AWB_LOCK_AVAILABLE 另请参阅: ACAMERA_SYNC_MAX_LATENCY

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT

摄像头设备可以生成其视野的深度测量值。

此功能要求摄像头设备支持以下内容:

  • AIMAGE_FORMAT_DEPTH16 支持作为输出格式。
  • AIMAGE_FORMAT_DEPTH_POINT_CLOUD 选择性支持作为输出格式。
  • 此摄像头设备以及所有具有相同 ACAMERA_LENS_FACING 的摄像头设备将在 ACameraManager_getCameraCharacteristicsACameraCaptureSession_captureCallback_result 中列出以下校准元数据条目:
    • ACAMERA_LENS_POSE_TRANSLATION
    • ACAMERA_LENS_POSE_ROTATION
    • ACAMERA_LENS_INTRINSIC_CALIBRATION
    • ACAMERA_LENS_DISTORTION
  • 此设备列出 ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE 条目。
  • 从 Android P 开始,此设备列出 ACAMERA_LENS_POSE_REFERENCE 条目。
  • 仅具有 DEPTH_OUTPUT 功能的 LIMITED 摄像头无需支持正常的 YUV_420_888、Y8、JPEG 和 PRIV 格式输出。它只需支持 DEPTH16 格式。

通常,深度输出的帧速率低于标准彩色捕获,因此 DEPTH16 和 DEPTH_POINT_CLOUD 格式通常会有延迟时间,应予以考虑(参见 ACAMERA_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS)。在同时支持深度和基于彩色的输出的设备上,为了实现流畅预览,建议使用重复突发模式,其中深度输出目标每 N 帧仅包含一次,其中 N 是预览输出速率和深度输出速率的比率,包括深度延迟时间。

另请参阅: ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE 另请参阅: ACAMERA_LENS_DISTORTION 另请参阅: ACAMERA_LENS_FACING 另请参阅: ACAMERA_LENS_INTRINSIC_CALIBRATION 另请参阅: ACAMERA_LENS_POSE_REFERENCE 另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA

摄像头设备是一个逻辑摄像头,由两个或更多物理摄像头支持。

在 API 级别 28 中,物理摄像头也必须通过 CameraManager::getCameraIdList 暴露给应用。

从 API 级别 29 开始:

逻辑流和物理流的组合,或来自不同物理摄像头的物理流的组合不予保证。但是,如果摄像头设备支持 ACameraDevice_isSessionConfigurationSupported,则应用必须能够通过调用 ACameraDevice_isSessionConfigurationSupported 来查询涉及物理流的流组合是否受支持。

相机应用不应假定系统中最多只有 1 个后置摄像头和 1 个前置摄像头。对于在前置摄像头和后置摄像头之间切换的应用,建议在支持的摄像头设备列表中的第一个后置摄像头和第一个前置摄像头之间切换。

此功能要求摄像头设备支持以下内容:

  • 底层物理摄像头的 ID 通过 CameraCharacteristics::getPhysicalCameraIds 返回。
  • 此摄像头设备必须在 CameraCharacteristics 中列出静态元数据 ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE。
  • 底层物理摄像头的静态元数据必须列出以下条目,以便应用可以关联物理流中的像素:
    • ACAMERA_LENS_POSE_REFERENCE
    • ACAMERA_LENS_POSE_ROTATION
    • ACAMERA_LENS_POSE_TRANSLATION
    • ACAMERA_LENS_INTRINSIC_CALIBRATION
    • ACAMERA_LENS_DISTORTION
  • 逻辑设备和物理设备的 SENSOR_INFO_TIMESTAMP_SOURCE 必须相同。
  • 逻辑摄像头必须是 LIMITED 或更高级别的设备。

逻辑摄像头设备的动态元数据可能包含 ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID,用于通知应用当前活动物理摄像头的 ID。活动物理摄像头是逻辑摄像头的主要图像数据输出(YUV 或 RAW)和元数据来源的物理摄像头。此外,这还指示了哪个物理摄像头用于输出到 RAW 流,或者在只有物理摄像头支持 RAW 的情况下,应用应该请求哪个物理 RAW 流。

逻辑摄像头的以下静态元数据标签描述了默认活动物理摄像头。当应用直接使用基于模板构建的请求时,活动物理摄像头是默认的。所有模板都将默认使用相同的活动物理摄像头。

  • ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE
  • ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
  • ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE
  • ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION
  • ACAMERA_SENSOR_INFO_PHYSICAL_SIZE
  • ACAMERA_SENSOR_INFO_WHITE_LEVEL
  • ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED
  • ACAMERA_SENSOR_REFERENCE_ILLUMINANT1
  • ACAMERA_SENSOR_REFERENCE_ILLUMINANT2
  • ACAMERA_SENSOR_CALIBRATION_TRANSFORM1
  • ACAMERA_SENSOR_CALIBRATION_TRANSFORM2
  • ACAMERA_SENSOR_COLOR_TRANSFORM1
  • ACAMERA_SENSOR_COLOR_TRANSFORM2
  • ACAMERA_SENSOR_FORWARD_MATRIX1
  • ACAMERA_SENSOR_FORWARD_MATRIX2
  • ACAMERA_SENSOR_BLACK_LEVEL_PATTERN
  • ACAMERA_SENSOR_MAX_ANALOG_SENSITIVITY
  • ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS
  • ACAMERA_SENSOR_AVAILABLE_TEST_PATTERN_MODES
  • ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE
  • ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE
  • ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION
  • ACAMERA_LENS_POSE_ROTATION
  • ACAMERA_LENS_POSE_TRANSLATION
  • ACAMERA_LENS_INTRINSIC_CALIBRATION
  • ACAMERA_LENS_POSE_REFERENCE
  • ACAMERA_LENS_DISTORTION

非 RAW 物理流的视野不得小于非 RAW 逻辑流的视野,或物理摄像头最大视野中的较小者。应用应检查物理捕获结果元数据,了解物理流如何被裁剪或缩放。更具体地说,给定物理摄像头结果元数据,物理摄像头的有效水平视野为

fov = 2 * atan2(cropW * sensorW / (2 * zoomRatio * activeArrayW), focalLength)

其中等式参数分别为物理摄像头的裁剪区域宽度、物理传感器宽度、缩放比例、活动阵列宽度和焦距。通常,活动物理摄像头的物理流与逻辑流具有相同的视野。但是,非活动物理摄像头的物理流可能并非如此。例如,如果逻辑摄像头具有宽镜头-超广角镜头配置,其中宽镜头是默认镜头,当裁剪区域设置为逻辑摄像头的活动阵列尺寸时(从 Android 11 开始,缩放比例设置为 1.0),超广角摄像头的物理流可能倾向于输出比宽摄像头视野更大的图像,以获得更好的立体匹配裕度或更稳健的运动跟踪。同时,只要在物理镜头能力范围内,物理非 RAW 流的视野不得小于请求的裁剪区域和缩放比例。例如,对于具有宽镜头-长焦镜头配置的逻辑摄像头,其中宽镜头是默认镜头,如果逻辑摄像头的裁剪区域设置为最大尺寸,并且缩放比例设置为 1.0,则长焦镜头的物理流将配置为其最大尺寸裁剪区域(无缩放)。

已弃用:在 Android 11 之前,所有非 RAW 物理流的视野不能大于非 RAW 逻辑流的视野。如果逻辑摄像头具有宽镜头-超广角镜头配置,其中宽镜头是默认镜头,当逻辑摄像头的裁剪区域设置为最大尺寸时,超广角镜头的物理流的 FOV 将与逻辑流相同,通过缩小裁剪区域使其小于其活动阵列尺寸来补偿较小的焦距。

对于逻辑摄像头,通常底层物理摄像头具有不同的 RAW 功能(例如分辨率或 CFA 模式)。应用可以通过两种方式从逻辑摄像头捕获 RAW 图像:

  • 如果逻辑摄像头具有 RAW 功能,应用可以像以前一样创建和使用 RAW 流。如果配置了 RAW 流,为了保持向后兼容性,摄像头设备会确保默认活动物理摄像头保持活动状态,并且不会切换到其他物理摄像头。(一个例外是,如果逻辑摄像头由相同的图像传感器组成并且由于不同的镜头而宣传多个焦距,则摄像头设备可能会根据应用设置的焦距从不同的物理摄像头生成 RAW 图像。)这种向后兼容的方法通常会导致光学变焦丢失,无法缩放到长焦镜头或超广角镜头。
  • 或者,如果设备支持,可以使用 MultiResolutionImageReader 从底层物理摄像头之一捕获 RAW 图像(取决于当前缩放级别)。由于不同的物理摄像头可能具有不同的 RAW 特性,应用需要使用活动物理摄像头的特性和结果元数据来获取相关的 RAW 元数据。

向后兼容的摄像头功能所需的捕获请求和结果元数据标签将仅基于逻辑摄像头的能力。另一方面,对逻辑摄像头使用手动捕获控制(传感器或后处理)可能会在 HAL 决定在具有不同特性的物理摄像头之间切换时导致意外行为。例如,当应用在放大时手动设置曝光时间和灵敏度时,由于 HAL 从一个物理摄像头切换到另一个物理摄像头,摄像头图像的亮度可能会突然改变。

另请参阅: ACAMERA_LENS_DISTORTION 另请参阅: ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION 另请参阅: ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE 另请参阅: ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE 另请参阅: ACAMERA_LENS_INTRINSIC_CALIBRATION 另请参阅: ACAMERA_LENS_POSE_REFERENCE 另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION 另请参阅: ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID 另请参阅: ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE 另请参阅: ACAMERA_SENSOR_AVAILABLE_TEST_PATTERN_MODES 另请参阅: ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 另请参阅: ACAMERA_SENSOR_CALIBRATION_TRANSFORM1 另请参阅: ACAMERA_SENSOR_CALIBRATION_TRANSFORM2 另请参阅: ACAMERA_SENSOR_COLOR_TRANSFORM1 另请参阅: ACAMERA_SENSOR_COLOR_TRANSFORM2 另请参阅: ACAMERA_SENSOR_FORWARD_MATRIX1 另请参阅: ACAMERA_SENSOR_FORWARD_MATRIX2 另请参阅: ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT 另请参阅: ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE 另请参阅: ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED 另请参阅: ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_INFO_PHYSICAL_SIZE 另请参阅: ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE 另请参阅: ACAMERA_SENSOR_INFO_WHITE_LEVEL 另请参阅: ACAMERA_SENSOR_MAX_ANALOG_SENSITIVITY 另请参阅: ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT1 另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT2

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING

摄像头设备的后处理阶段可以手动控制。摄像头设备支持图像后处理阶段的基本手动控制。这意味着以下控制保证受支持:

  • 手动色调映射控制
    • android.tonemap.curve
    • ACAMERA_TONEMAP_MODE
    • ACAMERA_TONEMAP_MAX_CURVE_POINTS
    • ACAMERA_TONEMAP_GAMMA
    • ACAMERA_TONEMAP_PRESET_CURVE
  • 手动白平衡控制
    • ACAMERA_COLOR_CORRECTION_TRANSFORM
    • ACAMERA_COLOR_CORRECTION_GAINS
  • 手动镜头阴影图控制
    • ACAMERA_SHADING_MODE
    • ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE
    • ACAMERA_STATISTICS_LENS_SHADING_MAP
    • ACAMERA_LENS_INFO_SHADING_MAP_SIZE
  • 手动色差校正控制(如果支持色差校正)
    • ACAMERA_COLOR_CORRECTION_ABERRATION_MODE
    • ACAMERA_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
  • 自动白平衡锁定
    • ACAMERA_CONTROL_AWB_LOCK

如果启用上述任何一项 3A 算法,则摄像头设备将在结果中准确报告由 AWB 应用的值。

给定的摄像头设备可能也支持额外的后处理控制,但此功能仅涵盖上述列表中的控制。

对于具有 LOGICAL_MULTI_CAMERA 功能的摄像头设备,当底层活动物理摄像头切换时,即使 awb 已锁定,色调映射、白平衡和阴影图也可能发生变化。但是,用户的整体后处理体验将保持一致。详情请参阅 LOGICAL_MULTI_CAMERA 功能。

另请参阅: ACAMERA_COLOR_CORRECTION_ABERRATION_MODE 另请参阅: ACAMERA_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES 另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM 另请参阅: ACAMERA_CONTROL_AWB_LOCK 另请参阅: ACAMERA_LENS_INFO_SHADING_MAP_SIZE 另请参阅: ACAMERA_SHADING_MODE 另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP 另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE 另请参阅: ACAMERA_TONEMAP_GAMMA 另请参阅: ACAMERA_TONEMAP_MAX_CURVE_POINTS 另请参阅: ACAMERA_TONEMAP_MODE 另请参阅: ACAMERA_TONEMAP_PRESET_CURVE

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR

摄像头设备可以手动控制(可以绕过 3A 算法,例如自动曝光和自动对焦)。摄像头设备支持传感器图像采集相关阶段的基本手动控制。这意味着以下控制保证受支持:

  • 手动帧持续时间控制
    • ACAMERA_SENSOR_FRAME_DURATION
    • ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION
  • 手动曝光控制
    • ACAMERA_SENSOR_EXPOSURE_TIME
    • ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE
  • 手动灵敏度控制
    • ACAMERA_SENSOR_SENSITIVITY
    • ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE
  • 手动镜头控制(如果镜头可调节)
    • ACAMERA_LENS_*
  • 手动闪光灯控制(如果存在闪光灯单元)
    • ACAMERA_FLASH_*
  • 手动黑电平锁定
    • ACAMERA_BLACK_LEVEL_LOCK
  • 自动曝光锁定
    • ACAMERA_CONTROL_AE_LOCK

如果启用了上述任何一项 3A 算法,则摄像头设备将在结果中准确报告由 3A 应用的值。

给定的摄像头设备可能也支持额外的手动传感器控制,但此功能仅涵盖上述列表中的控制。

如果支持此功能,则 android.scaler.streamConfigurationMap 将为每个支持的尺寸格式组合额外返回一个大于零的最小帧持续时间。

对于具有 LOGICAL_MULTI_CAMERA 功能的摄像头设备,当底层活动物理摄像头切换时,即使 AE/AF 已锁定,exposureTime、灵敏度和镜头属性也可能发生变化。但是,用户的整体自动曝光和自动对焦体验将保持一致。详情请参阅 LOGICAL_MULTI_CAMERA 功能。

另请参阅: ACAMERA_BLACK_LEVEL_LOCK 另请参阅: ACAMERA_CONTROL_AE_LOCK 另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE 另请参阅: ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME

摄像头设备是单色摄像头,不包含彩色滤光阵列,对于 YUV_420_888 流,U 和 V 平面上的像素值均为 128。

单色摄像头必须支持其设备级别和功能所需的保证流组合。此外,如果单色摄像头设备支持 Y8 格式,则所有与 YUV_420_888 相关的强制流组合要求也适用于 Y8。对于 Bayer 摄像头设备,没有关于 Y8 的强制流组合要求。

从 Android Q 开始,单色摄像头的 SENSOR_INFO_COLOR_FILTER_ARRANGEMENT 将是 MONO 或 NIR。

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING

摄像头设备支持 ACAMERA_CONTROL_CAPTURE_INTENT 的 MOTION_TRACKING 值,该值将最大曝光时间限制为 20 毫秒。

这限制了捕获图像的运动模糊,从而为图像稳定或增强现实等用例提供了更好的图像跟踪结果。

另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_RAW

摄像头设备支持输出 RAW 缓冲区和用于解释它们的元数据。

支持 RAW 功能的设备既可以保存 DNG 文件,也可以直接应用处理原始传感器图像。

  • RAW_SENSOR 支持作为输出格式。
  • RAW_SENSOR 流的最大可用分辨率将与 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 或 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 中的值匹配。
  • 摄像头设备提供所有与 DNG 相关的可选元数据条目。

另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS

摄像头设备支持在内置 3A 算法运行时准确报告许多传感器控制的传感器设置。这允许报告传感器设置,即使这些设置无法手动更改。

以下控制报告的值保证在 CaptureResult 中可用,包括在启用 3A 时:

  • 曝光控制
    • ACAMERA_SENSOR_EXPOSURE_TIME
  • 灵敏度控制
    • ACAMERA_SENSOR_SENSITIVITY
  • 镜头控制(如果镜头可调节)
    • ACAMERA_LENS_FOCUS_DISTANCE
    • ACAMERA_LENS_APERTURE

此功能是 MANUAL_SENSOR 控制功能的子集,如果 MANUAL_SENSOR 功能可用,则始终包含此功能。

另请参阅: ACAMERA_LENS_APERTURE 另请参阅: ACAMERA_LENS_FOCUS_DISTANCE 另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA

摄像头设备能够将图像数据写入 Android 用户空间或 Android 内核无法访问的内存区域,并且仅可由可信执行环境 (TEE) 访问。

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE

摄像头设备支持通过 OutputConfiguration::setStreamUseCase 选择每个流的用例,以便设备可以针对特定用户场景优化摄像头管道参数,例如调优、传感器模式或 ISP 设置。此功能的一些示例用法包括:

  • 区分高质量 YUV 捕获和常规 YUV 流(图像质量可能不如 JPEG 流),或者
  • 使用一个流服务多种目的:取景器、视频录制和静止图像捕获。这在希望对预览、保存的图像和保存的视频应用相同编辑的应用中很常见。

此功能要求摄像头设备支持以下流用例:

  • DEFAULT,用于向后兼容(应用未设置流用例时)
  • PREVIEW,用于实时取景器和应用内图像分析
  • STILL_CAPTURE,用于静止照片捕获
  • VIDEO_RECORD,用于录制视频片段
  • PREVIEW_VIDEO_STILL,用于预览、视频录制和静止图像捕获的单一流。
  • VIDEO_CALL,用于长时间视频通话

CameraCharacteristics::SCALER_AVAILABLE_STREAM_USE_CASES 列出了所有支持的流用例。

有关涉及流用例的强制流组合的指南,也可以通过 MandatoryStreamCombination 进行查询。

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA

此摄像头设备仅可由 Android 的系统组件和特权应用访问。进程需要拥有 android.permission.SYSTEM_CAMERA 以及 android.permission.CAMERA 才能连接到此摄像头设备。

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR

此摄像头设备除了 android.scaler.streamConfigurationMap 中描述的图像尺寸外,还能够生成超高分辨率图像。它可以在“默认”模式和“最大分辨率”模式下运行。通常,它通过在“默认”模式下像素合并并在“最大分辨率”模式下不进行像素合并来实现这一点。android.scaler.streamConfigurationMap 描述了“默认”模式下支持的流配置。在“最大分辨率”模式下支持的流配置由 android.scaler.streamConfigurationMapMaximumResolution 描述。具有此功能的摄像头设备在最大分辨率模式下的像素阵列尺寸(ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE)将至少为 24 兆像素。

另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE

acamera_metadata_enum_acamera_request_available_color_space_profiles_map

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_request_available_color_space_profiles_map
属性
ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020_HLG

RGB 色彩空间 BT.2100,标准化为 Hybrid Log Gamma 编码。

ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3

基于 SMPTE RP 431-2-2007 和 IEC 61966-2.1:1999 的 RGB 色彩空间 Display P3。

ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB

RGB 色彩空间 sRGB,标准化为 IEC 61966-2.1:1999。

ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED

默认值,未明确指定时。摄像头设备将选择要使用的色彩空间。

acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map
属性
ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM

这是特定设备的默认 Dolby Vision 捕获模式的摄像头模式。这将由每个特定设备进行调优,以获得与其特定受众产生共鸣的令消费者愉悦的结果。我们预计每个特定设备都会有不同的默认 Dolby Vision 捕获外观。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_OEM_PO

这是 10 位 Dolby Vision HDR 设备特定捕获模式的功耗优化模式。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF

这是一种 Dolby Vision 捕获的摄像头模式,针对更准确的场景捕获进行了优化。这通常与特定设备可能想要为消费者优化的通用 Dolby Vision 捕获进行的调优不同。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_10B_HDR_REF_PO

这是 10 位 Dolby Vision HDR 参考模式的功耗优化模式。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM

这是设备特定调优和优化的 Dolby Vision 捕获模式的 8 位版本。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_OEM_PO

这是 8 位 Dolby Vision HDR 设备特定捕获模式的功耗优化模式。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF

这是 8 位 Dolby Vision 参考捕获模式,针对场景准确性进行了优化。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_DOLBY_VISION_8B_HDR_REF_PO

这是 8 位 Dolby Vision HDR 参考模式的功耗优化模式。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10

使用 SMPTE ST 2084 传递函数编码的 10 位像素样本。此配置文件利用内部静态元数据提高捕获质量。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HDR10_PLUS

使用 SMPTE ST 2084 传递函数编码的 10 位像素样本。与 HDR10 不同,此配置文件使用内部逐帧元数据进一步增强捕获质量。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_HLG10

使用 Hybrid log-gamma 传递函数编码的 10 位像素样本。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX
ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD

8 位 SDR 配置文件,对于所有不支持 10 位输出的设备而言是默认配置文件。

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations
属性
ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_10BIT_OUTPUT

如果支持,推荐的 10 位输出流配置必须包含宣传的 ImageFormat::YCBCR_P010ImageFormat::PRIVATE 输出的子集,当与支持的 10 位动态范围配置文件一起注册时,这些输出会进行功耗和性能优化。详情请参阅 android.hardware.camera2.params.OutputConfiguration::setDynamicRangeProfile。

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_LOW_LATENCY_SNAPSHOT

如果支持,推荐的低延迟流配置在标准操作条件下(合理的光照水平,系统未加载)并使用 TEMPLATE_STILL_CAPTURE 模板时,端到端延迟不得超过 200 毫秒。这主要用于列出 JPEG 输出格式 的配置,但也可能添加其他支持的输出格式。

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW

预览必须只包含非延迟的处理流配置,输出格式如 AIMAGE_FORMAT_YUV_420_888AIMAGE_FORMAT_PRIVATE 等。

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END
ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PUBLIC_END_3_8
ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RAW

如果支持,推荐的原始流配置必须只包含基于 RAW 的输出格式。

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD

视频录制必须包含与宣传支持的媒体配置文件 CamcorderProfile 匹配的流配置,格式为 IMPLEMENTATION_DEFINED。

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT

推荐的快照流配置必须至少包含一个尺寸接近 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 且格式为 JPEG 输出格式 的配置。考虑到纵横比、对齐等限制,建议的最大尺寸区域不应小于传感器阵列尺寸区域的 97%。

另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VENDOR_START

供应商定义的用例。这些取决于供应商的实现。

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT

视频快照必须包含至少与最大 RECORD 分辨率一样大且仅包含 JPEG 输出格式 的流配置。此外,这些配置不应导致预览故障,并且能够以 30 fps 运行。

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_ZSL

如果支持,推荐的输入流配置必须只与 ZSL 以及其他处理过和/或延迟的输出格式一起宣传。

acamera_metadata_enum_acamera_scaler_available_stream_configurations

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_available_stream_configurations

acamera_metadata_enum_acamera_scaler_available_stream_configurations_maximum_resolution

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_available_stream_configurations_maximum_resolution

acamera_metadata_enum_acamera_scaler_available_stream_use_cases

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_available_stream_use_cases
属性
ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW

当客户端选择裁剪视野时的裁剪 RAW 流。

某些类型的图像传感器可以通过像素合并模式运行,以在捕获帧时提高信噪比。然而,在某些缩放级别和/或当其他场景条件被认为适合时,摄像头子系统可能会选择取消像素合并并重新马赛克传感器输出。这会导致 RAW 帧在视野中被裁剪,但像素数量与全视野 RAW 相同,从而提高图像细节。

RAW 流的最终视野将大于或等于可裁剪的非 RAW 流的视野。此 RAW 流的有效裁剪区域将反映在 CaptureResult 键 ACAMERA_SCALER_RAW_CROP_REGION 中。

如果此流用例设置在非 RAW 流上,即不是以下任何一个:

则会话配置不保证成功。

某些设备可能不支持此流用例。

另请参阅: ACAMERA_SCALER_RAW_CROP_REGION

ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT

默认流用例。

此用例与应用未设置任何流用例时的行为相同。摄像头设备根据输出目标的属性(例如格式、数据空间或表面类类型)优化图像处理管道。

ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW

显示给用户的实时流。

针对性能和可用性作为取景器进行了优化,但不一定针对图像质量。输出并非用于保存为图像或视频。

如果 ACAMERA_CONTROL_* 设置为 FAST,则不会出现延迟。如果设置为 HIGH_QUALITY,可能会出现延迟。此用例与默认的 SurfaceView 和 SurfaceTexture 目标行为相同。此外,此用例可用于应用内图像分析。

ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_PREVIEW_VIDEO_STILL

用于预览、视频和静止图像捕获组合目的的单一流。

对于此类多用途流,摄像头设备旨在在各个用例之间做出最佳权衡。例如,STILL_CAPTURE 用例本身可能会因追求最佳图像质量而出现延迟。但如果与 PREVIEW 和 VIDEO_RECORD 结合使用,摄像头设备需要权衡额外的图像处理和速度,以免降低预览和视频录制速度。

同样,VIDEO_RECORD 可能会产生帧时延,但 PREVIEW_VIDEO_STILL 必须具有最小的输出延迟。这意味着,为了启用此用例的视频防抖,设备必须支持并且应用必须选择 PREVIEW_STABILIZATION 模式进行视频防抖。

ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_STILL_CAPTURE

静止照片捕获。

针对高质量高分辨率捕获进行了优化,预期帧速率不会达到预览级别。

无论 ACAMERA_CONTROL_* 是否为 HIGH_QUALITY,此流都可能出现延迟。此用例的行为与默认的 JPEG 和 RAW 相关格式相同。

ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_CALL

长时间视频通话,针对功耗效率和视频质量进行了优化。

摄像头传感器可能会在较低分辨率模式下运行,以降低功耗,但会牺牲部分图像和数码变焦质量。与 VIDEO_RECORD 不同,VIDEO_CALL 输出预期在黑暗条件下工作,因此通常会伴随可变帧速率设置,以便在弱光下提供足够的曝光时间。

ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES_VIDEO_RECORD

录制视频片段。

针对高质量视频捕获进行了优化,包括设备支持并应用启用的高质量图像防抖。因此,输出帧可能会比实时帧延迟较长,以实现最高质量的防抖或其他处理。因此,此类输出不适合直接在屏幕上绘制,而是预期保存到磁盘或类似位置以便稍后播放或处理。只有设置 VIDEO_RECORD 用例的流才保证在视频防抖控制设置为 ON 时应用视频防抖,而不是 PREVIEW_STABILIZATION。

此用例的行为与默认的 MediaRecorder 和 MediaCodec 目标相同。

acamera_metadata_enum_acamera_scaler_cropping_type

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_cropping_type
属性
ACAMERA_SCALER_CROPPING_TYPE_CENTER_ONLY

摄像头设备仅支持中心裁剪区域。

ACAMERA_SCALER_CROPPING_TYPE_FREEFORM

摄像头设备支持任意选择的裁剪区域。

acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported

acamera_metadata_enum_acamera_scaler_physical_camera_multi_resolution_stream_configurations

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_physical_camera_multi_resolution_stream_configurations

acamera_metadata_enum_acamera_scaler_rotate_and_crop

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_scaler_rotate_and_crop
属性
ACAMERA_SCALER_ROTATE_AND_CROP_180

处理后的图像旋转 180 度。由于纵横比未改变,不执行裁剪。

ACAMERA_SCALER_ROTATE_AND_CROP_270

处理后的图像顺时针旋转 270 度,然后裁剪到原始纵横比。

ACAMERA_SCALER_ROTATE_AND_CROP_90

处理后的图像顺时针旋转 90 度,然后裁剪到原始纵横比。

ACAMERA_SCALER_ROTATE_AND_CROP_AUTO

相机 API 根据应用对可调整大小的支持以及当前的多种窗口模式,自动选择旋转和裁剪的最佳具体值。

如果应用不支持调整大小,但其主 Activity 的显示模式不是典型方向,相机 API 会根据设备配置设置 ROTATE_AND_CROP_90 或其他支持的旋转值,以确保预览和捕获的图像正确地显示给用户。否则,将选择 ROTATE_AND_CROP_NONE

选择非 NONE 的值时,还会以不同方式解析多个元数据字段,以确保正确处理人脸检测框绘制或传入触控对焦坐标等功能的坐标。相机 API 会在活动阵列坐标系与裁剪旋转后的坐标系之间转换位置,以使操作对应用透明。

当应用选择非 AUTO 模式时,将不会进行坐标映射。

ACAMERA_SCALER_ROTATE_AND_CROP_NONE

不应用旋转和裁剪。处理后的输出采用传感器方向。

acamera_metadata_enum_acamera_sensor_info_color_filter_arrangement

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sensor_info_color_filter_arrangement
属性
ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_BGGR
ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GBRG
ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_GRBG
ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO

传感器没有任何拜耳彩色滤光片。此类传感器以单色捕捉可见光。捕获的精确加权和波长未指定,但通常只包括可见频率。此值表示单色相机。

ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR

传感器具有近红外滤光片,可捕捉波长在大约 750 纳米到 1400 纳米之间的光线,并且同一滤光片覆盖整个传感器阵列。此值表示单色相机。

ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGB

传感器不是拜耳型;每个像素的输出有 3 个 16 位值,而不是每个像素只有 1 个 16 位值。

ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_RGGB

acamera_metadata_enum_acamera_sensor_info_lens_shading_applied

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sensor_info_lens_shading_applied

acamera_metadata_enum_acamera_sensor_info_timestamp_source

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sensor_info_timestamp_source
属性
ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME

来自 ACAMERA_SENSOR_TIMESTAMP 的时间戳与 SystemClock::elapsedRealtimeNanos 位于同一时间基准,并且可以使用该基准与其他时间戳进行比较。

当来自 REALTIME 设备的数据缓冲直接从相机传递到视频编码器时,会自动进行补偿,以考虑音频和相机子系统不同的时间基准。如果应用接收数据缓冲,然后稍后将其发送到视频编码器或其他与音频子系统时间戳或类似内容进行比较的应用,则不存在此补偿。在这些情况下,应用需要自行调整时间戳。SystemClock::elapsedRealtimeNanosSystemClock::uptimeMillis 仅在设备处于睡眠状态时才会发生分歧,因此可以在每个活动会话中测量两次来源之间的偏移,并将其应用于时间戳以获得足够的 A/V 同步精度。

另请参阅: ACAMERA_SENSOR_TIMESTAMP

ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE_UNKNOWN

来自 ACAMERA_SENSOR_TIMESTAMP 的时间戳以纳秒为单位且是单调的,但无法与来自其他子系统(例如加速度计、陀螺仪等)或同一系统中相同或不同相机设备的任何其他实例的时间戳进行精确比较。但是,时间戳大致与 SystemClock::uptimeMillis 位于同一时间基准。精度至少足以满足视频录制等 A/V 同步任务,并且时间戳可以直接与来自音频子系统的时间戳一起用于该任务。

单个相机实例的流和结果之间的时间戳是可比的,并且单个捕获生成的所有缓冲和结果元数据的时间戳是相同的。

另请参阅: ACAMERA_SENSOR_TIMESTAMP

acamera_metadata_enum_acamera_sensor_pixel_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sensor_pixel_mode
属性
ACAMERA_SENSOR_PIXEL_MODE_DEFAULT

这是默认的传感器像素模式。

ACAMERA_SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION

在此模式下,传感器通常不会对像素进行 binning,因此可以提供更大的图像尺寸。

acamera_metadata_enum_acamera_sensor_raw_binning_factor_used

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sensor_raw_binning_factor_used
属性
ACAMERA_SENSOR_RAW_BINNING_FACTOR_USED_FALSE

在此捕获中,RAW 目标具有规则的拜耳模式。

ACAMERA_SENSOR_RAW_BINNING_FACTOR_USED_TRUE

在此捕获中,RAW 目标具有 ACAMERA_SENSOR_INFO_BINNING_FACTOR 作为拜耳模式。

另请参阅: ACAMERA_SENSOR_INFO_BINNING_FACTOR

acamera_metadata_enum_acamera_sensor_test_pattern_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sensor_test_pattern_mode
属性
ACAMERA_SENSOR_TEST_PATTERN_MODE_COLOR_BARS

所有像素数据都替换为 8 条颜色条纹模式。

垂直条纹(从左到右)如下所示:

  • 100% 白色
  • 黄色
  • 青色
  • 绿色
  • 品红色
  • 红色
  • 蓝色
  • 黑色

通常,图像看起来像下面这样

W Y C G M R B K
W Y C G M R B K
W Y C G M R B K
W Y C G M R B K
W Y C G M R B K
. . . . . . . .
. . . . . . . .
. . . . . . . .

(B = Blue, K = Black)

每条条纹应占传感器像素阵列宽度的 1/8。如果无法实现,条纹大小应向下舍入到最接近的整数,且模式可以在右侧重复。

每条条纹的高度必须始终占满整个传感器像素阵列的高度。

此测试模式中的每个像素必须设置为 0% 强度或 100% 强度。

ACAMERA_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY

测试模式类似于 COLOR_BARS,但每条条纹应从顶部指定的颜色开始,并向底部渐变为灰色。

此外,每条条纹又被细分为左右两半。左半部分应具有平滑渐变,右半部分应具有量化渐变。

特别是,右半部分应由占活动传感器像素阵列宽度 1/16 的同色块组成。

量化渐变中的最低有效位应从平滑渐变中的最高有效位复制。

每条条纹的高度应始终是 128 的倍数。如果不是这种情况,模式应在图像底部重复。

ACAMERA_SENSOR_TEST_PATTERN_MODE_CUSTOM1

第一个自定义测试模式。仅在此相机设备上可用的所有自定义模式至少具有此数值。

所有自定义测试模式都将是静态的(即原始图像不会在帧之间变化)。

ACAMERA_SENSOR_TEST_PATTERN_MODE_OFF

不使用任何测试模式,相机设备返回来自图像传感器的捕获。

如果未设置该键,则此为默认值。

ACAMERA_SENSOR_TEST_PATTERN_MODE_PN9

所有像素数据都替换为由 PN9 512 位序列生成的伪随机序列(通常在硬件中通过线性反馈移位寄存器实现)。

生成器应在每帧开始时重置,因此使用此测试模式的后续每帧原始帧应与上一帧完全相同。

ACAMERA_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR

[R, G_even, G_odd, B] 中的每个像素都被其各自在 ACAMERA_SENSOR_TEST_PATTERN_DATA 中提供的颜色通道替换。

例如

ACAMERA_SENSOR_TEST_PATTERN_DATA = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0]

所有绿色像素均为 100% 绿色。所有红色/蓝色像素均为黑色。

ACAMERA_SENSOR_TEST_PATTERN_DATA = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0]

所有红色像素均为 100% 红色。只有奇数绿色像素为 100% 绿色。所有蓝色像素均为 100% 黑色。

另请参阅: ACAMERA_SENSOR_TEST_PATTERN_DATA

acamera_metadata_enum_acamera_shading_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_shading_mode
属性
ACAMERA_SHADING_MODE_FAST

应用镜头阴影校正,但不相对于传感器原始输出降低帧速率

ACAMERA_SHADING_MODE_HIGH_QUALITY

应用高质量镜头阴影校正,代价是可能会降低帧速率。

ACAMERA_SHADING_MODE_OFF

不应用镜头阴影校正。

acamera_metadata_enum_acamera_statistics_face_detect_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_statistics_face_detect_mode
属性
ACAMERA_STATISTICS_FACE_DETECT_MODE_FULL

返回所有人脸元数据。

在此模式下,人脸矩形、分数、地标和人脸 ID 均有效。

ACAMERA_STATISTICS_FACE_DETECT_MODE_OFF

在捕获结果中不包括人脸检测统计数据。

ACAMERA_STATISTICS_FACE_DETECT_MODE_SIMPLE

仅返回人脸矩形和置信度值。

acamera_metadata_enum_acamera_statistics_hot_pixel_map_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_statistics_hot_pixel_map_mode
属性
ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE_OFF

热像素映射生成已禁用。

ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE_ON

热像素映射生成已启用。

acamera_metadata_enum_acamera_statistics_lens_shading_map_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_statistics_lens_shading_map_mode
属性
ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE_OFF

在捕获结果中不包括镜头阴影映射。

ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE_ON

在捕获结果中包括镜头阴影映射。

acamera_metadata_enum_acamera_statistics_ois_data_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_statistics_ois_data_mode
属性
ACAMERA_STATISTICS_OIS_DATA_MODE_OFF

在捕获结果中不包括 OIS 数据。

ACAMERA_STATISTICS_OIS_DATA_MODE_ON

在捕获结果中包括 OIS 数据。

ACAMERA_STATISTICS_OIS_TIMESTAMPS、ACAMERA_STATISTICS_OIS_X_SHIFTS 和 ACAMERA_STATISTICS_OIS_Y_SHIFTS 在输出结果元数据中提供 OIS 数据。

另请参阅: ACAMERA_STATISTICS_OIS_TIMESTAMPS 另请参阅: ACAMERA_STATISTICS_OIS_X_SHIFTS 另请参阅: ACAMERA_STATISTICS_OIS_Y_SHIFTS

acamera_metadata_enum_acamera_statistics_scene_flicker

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_statistics_scene_flicker
属性
ACAMERA_STATISTICS_SCENE_FLICKER_50HZ

相机设备检测到当前场景中的照明以 50Hz 频率闪烁。

ACAMERA_STATISTICS_SCENE_FLICKER_60HZ

相机设备检测到当前场景中的照明以 60Hz 频率闪烁。

ACAMERA_STATISTICS_SCENE_FLICKER_NONE

相机设备未检测到当前场景中的任何闪烁照明。

acamera_metadata_enum_acamera_sync_frame_number

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sync_frame_number
属性
ACAMERA_SYNC_FRAME_NUMBER_CONVERGING

当前结果尚未与任何请求完全同步。

正在进行同步,从此结果读取元数据可能包含自上次同步时间以来已生效的数据混合。

在将来的某些结果中,在 ACAMERA_SYNC_MAX_LATENCY 帧内,此值将更新为结果保证同步到的实际帧号(只要请求设置保持不变)。

另请参阅: ACAMERA_SYNC_MAX_LATENCY

ACAMERA_SYNC_FRAME_NUMBER_UNKNOWN

当前结果的同步状态未知。

结果可能已经收敛,也可能正在进行中。从此结果读取可能包含先前请求的部分设置混合。

更改设置后,新设置最终将全部对输出缓冲区和结果生效。但是,发生这种情况时,此值不会更改。快速更改设置可能会产生使用最近请求设置混合的结果。

此值主要用于与较旧的相机实现(针对 android.hardware.Camera)进行向后兼容。

acamera_metadata_enum_acamera_sync_max_latency

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_sync_max_latency
属性
ACAMERA_SYNC_MAX_LATENCY_PER_FRAME_CONTROL

每帧立即应用请求。

一个接一个地更改多个请求的控制将产生的结果是每帧都以原子方式应用这些控制。

所有 FULL 功能设备都将以此作为其 maxLatency。

ACAMERA_SYNC_MAX_LATENCY_UNKNOWN

每新帧都将过去请求的某个子集(可能包含整个集合)应用于相机设置。

通过提交一系列相同的请求,相机设备最终将应用相机设置,但确切的时间点未知。

所有 LEGACY 功能设备都将以此作为其 maxLatency。

acamera_metadata_enum_acamera_tonemap_mode

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_tonemap_mode
属性
ACAMERA_TONEMAP_MODE_CONTRAST_CURVE

使用 ACAMERA_TONEMAPCURVE_* 条目中指定的色调映射曲线。

必须禁用所有颜色增强和色调映射,除了应用 android.tonemap.curve 指定的色调映射曲线。

相对于原始传感器输出,不得降低帧速率。

ACAMERA_TONEMAP_MODE_FAST

可以应用高级伽马映射和颜色增强,而不降低相对于原始传感器输出的帧速率。

ACAMERA_TONEMAP_MODE_GAMMA_VALUE

使用 ACAMERA_TONEMAP_GAMMA 中指定的伽马值执行色调映射。

必须禁用所有颜色增强和色调映射,除了应用 ACAMERA_TONEMAP_GAMMA 指定的色调映射曲线。

相对于原始传感器输出,不得降低帧速率。

另请参阅: ACAMERA_TONEMAP_GAMMA

ACAMERA_TONEMAP_MODE_HIGH_QUALITY

将应用高质量伽马映射和颜色增强,代价是相对于原始传感器输出可能会降低帧速率。

ACAMERA_TONEMAP_MODE_PRESET_CURVE

使用 ACAMERA_TONEMAP_PRESET_CURVE 中指定的预设色调映射曲线执行色调映射。

必须禁用所有颜色增强和色调映射,除了应用 ACAMERA_TONEMAP_PRESET_CURVE 指定的色调映射曲线。

相对于原始传感器输出,不得降低帧速率。

另请参阅: ACAMERA_TONEMAP_PRESET_CURVE

acamera_metadata_enum_acamera_tonemap_preset_curve

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_enum_acamera_tonemap_preset_curve
属性
ACAMERA_TONEMAP_PRESET_CURVE_REC709

色调映射曲线由 ITU-R BT.709 定义

ACAMERA_TONEMAP_PRESET_CURVE_SRGB

色调映射曲线由 sRGB 定义

acamera_metadata_tag

声明于 camera/NdkCameraMetadataTags.h
 acamera_metadata_tag

相机元数据标签主枚举类型。

属性
ACAMERA_AUTOMOTIVE_END
ACAMERA_AUTOMOTIVE_LENS_END
ACAMERA_AUTOMOTIVE_LENS_FACING

相机相对于车辆车身框架和乘客座位朝向的方向。

类型:byte[n] (acamera_metadata_enum_android_automotive_lens_facing_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此枚举定义了 ACAMERA_AUTOMOTIVE_LOCATION 定义的位置上的车载设备相机的镜头朝向特性。如果系统具有 FEATURE_AUTOMOTIVE 功能,则相机将在其静态元数据中包含此条目。

当 ACAMERA_AUTOMOTIVE_LOCATION 为 INTERIOR 时,此条目包含一个或多个 INTERIOR_* 值或单个 EXTERIOR_* 值。当包含多个 INTERIOR_* 值时,第一个值必须是离光轴最近的座位的值。如果包含 INTERIOR_OTHER,则所有其他值都将无效。

当 ACAMERA_AUTOMOTIVE_LOCATION 为 EXTERIOR_* 或 EXTRA 时,此条目包含单个 EXTERIOR_* 值。

如果相机具有 INTERIOR_OTHER 或 EXTERIOR_OTHER,或者多个相机位于同一位置并朝向同一方向,它们的静态元数据将列出以下条目,以便应用可以确定其镜头的确切朝向:

  • ACAMERA_LENS_POSE_REFERENCE
  • ACAMERA_LENS_POSE_ROTATION
  • ACAMERA_LENS_POSE_TRANSLATION

另请参阅: ACAMERA_AUTOMOTIVE_LOCATION 另请参阅: ACAMERA_LENS_POSE_REFERENCE 另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_AUTOMOTIVE_LOCATION

车载设备上相机的位置。

类型:byte (acamera_metadata_enum_android_automotive_location_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此枚举定义了相机相对于车辆车身框架在车载传感器坐标系中的位置。如果系统具有 FEATURE_AUTOMOTIVE 功能,则相机将在其静态元数据中包含此条目。

  • INTERIOR 是车辆车身框架内部(或乘客舱)。
  • EXTERIOR 是车辆车身框架外部。
  • EXTRA 是额外车辆,例如拖车。

此坐标系中车辆车身框架的每一侧定义如下:

  • FRONT 是 Y 轴增加的方向。
  • REAR 是 Y 轴减小的方向。
  • LEFT 是 X 轴减小的方向。
  • RIGHT 是 X 轴增加的方向。

如果相机具有 EXTERIOR_OTHER 或 EXTRA_OTHER,或者多个相机位于同一位置并朝向同一方向,它们的静态元数据将列出以下条目,以便应用可以确定相机的确切位置:

  • ACAMERA_LENS_POSE_REFERENCE
  • ACAMERA_LENS_POSE_ROTATION
  • ACAMERA_LENS_POSE_TRANSLATION

另请参阅: ACAMERA_LENS_POSE_REFERENCE 另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION

ACAMERA_BLACK_LEVEL_END
ACAMERA_BLACK_LEVEL_LOCK

黑电平补偿是否锁定在其当前值,或者是否可以自由变化。

类型:byte (acamera_metadata_enum_android_black_level_lock_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此帧的黑电平偏移是否已锁定。如果在捕获请求中 ACAMERA_BLACK_LEVEL_LOCK 为 ON,则应为 ON,除非其他捕获设置的更改迫使相机设备执行黑电平重置。

另请参阅: ACAMERA_BLACK_LEVEL_LOCK

ACAMERA_COLOR_CORRECTION_ABERRATION_MODE

色差校正算法的工作模式。

类型:byte (acamera_metadata_enum_android_color_correction_aberration_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

色差(颜色像差)是由于不同波长的光线在穿过镜头后无法聚焦到同一焦点而引起的。此元数据定义了色差校正算法的高级控制,旨在最大限度地减少图像中物体边界可能出现的色差伪影。

FAST/HIGH_QUALITY 都表示将应用由相机设备确定的色差校正。HIGH_QUALITY 模式表示相机设备将使用最高质量的色差校正算法,即使这会降低捕获速率。FAST 表示相机设备在应用色差校正时不会降低捕获速率。

LEGACY 设备将始终处于 FAST 模式。

ACAMERA_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES

此相机设备支持的 ACAMERA_COLOR_CORRECTION_ABERRATION_MODE 的色差校正模式列表。

另请参阅: ACAMERA_COLOR_CORRECTION_ABERRATION_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此键列出了 ACAMERA_COLOR_CORRECTION_ABERRATION_MODE 的有效模式。如果设备没有可用的色差校正模式,则此列表将仅包含 OFF 模式。所有相机设备都将支持 OFF 或 FAST 模式。

支持 MANUAL_POST_PROCESSING 功能的相机设备将始终列出 OFF 模式。这包括所有 FULL 级别设备。

LEGACY 设备将始终只支持 FAST 模式。

另请参阅: ACAMERA_COLOR_CORRECTION_ABERRATION_MODE

ACAMERA_COLOR_CORRECTION_END
ACAMERA_COLOR_CORRECTION_GAINS

应用于拜耳原始颜色通道用于白平衡的增益。

类型:float[4]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

当请求的 ACAMERA_COLOR_CORRECTION_MODE 不是 TRANSFORM_MATRIX 时,这些每通道增益由相机设备设置,或者当 ACAMERA_COLOR_CORRECTION_MODE 是 TRANSFORM_MATRIX 时,由应用在请求中直接设置。

结果元数据中的增益是相机设备实际应用于当前帧的增益。

增益的有效范围因设备而异,但保证 [1.0, 3.0] 之间的增益不会被裁剪。即使给定设备允许小于 1.0 的增益,通常也不建议这样做,因为这可能会产生颜色伪影。

另请参阅: ACAMERA_COLOR_CORRECTION_MODE

ACAMERA_COLOR_CORRECTION_MODE

模式控制选择如何将图像数据从传感器的原生颜色转换为线性 sRGB 颜色。

类型:byte (acamera_metadata_enum_android_color_correction_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

当使用 ACAMERA_CONTROL_AWB_MODE 启用自动白平衡 (AWB) 时,此控制将被 AWB 例程覆盖。禁用 AWB 时,应用控制颜色映射的执行方式。

下面我们定义了预期的处理流水线。为了在设备之间保持一致性,这始终适用于 TRANSFORM_MATRIX。

当使用 FAST 或 HIGH_QUALITY 时,相机设备可能会进行额外的处理,但相机设备仍将提供 ACAMERA_COLOR_CORRECTION_GAINS 和 ACAMERA_COLOR_CORRECTION_TRANSFORM(在结果中),并且大致正确。

切换到 TRANSFORM_MATRIX 并使用 FAST 或 HIGH_QUALITY 提供的数据将产生与相机设备在先前帧中产生的白点相同的图片。

预期的处理流水线如下所示:

白平衡由两个值编码:一个 4 通道白平衡增益向量(应用于拜耳域)和一个 3x3 颜色变换矩阵(在去马赛克后应用)。

4 通道白平衡增益定义为:

ACAMERA_COLOR_CORRECTION_GAINS = [ R G_even G_odd B ]

其中 G_even 是输出偶数行绿色像素的增益,G_odd 是输出奇数行绿色像素的增益。对于给定的相机设备实现,它们可能相同;如果相机设备不支持偶数/奇数绿色通道的单独增益,它将使用 G_even 值,并在输出结果元数据中将 G_odd 写成等于 G_even

颜色变换矩阵定义为一个包含 9 个元素的向量:

ACAMERA_COLOR_CORRECTION_TRANSFORM = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]

它定义了从输入传感器颜色 P_in = [ r g b ] 到输出线性 sRGB P_out = [ r' g' b' ] 的变换,

颜色如下:

r' = I0r + I1g + I2b
g' = I3r + I4g + I5b
b' = I6r + I7g + I8b

输入和输出值范围必须匹配。溢出/下溢值将被裁剪以适应范围。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM 另请参阅: ACAMERA_CONTROL_AWB_MODE

ACAMERA_COLOR_CORRECTION_TRANSFORM

用于将传感器 RGB 颜色空间转换为输出线性 sRGB 颜色空间的颜色变换矩阵。

类型:rational[3*3]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

当请求的 ACAMERA_COLOR_CORRECTION_MODE 不是 TRANSFORM_MATRIX 时,此矩阵由相机设备设置,或者当 ACAMERA_COLOR_CORRECTION_MODE 是 TRANSFORM_MATRIX 时,由应用在请求中直接设置。

在后一种情况下,相机设备可能会对矩阵进行舍入以解决精度问题;最终舍入后的矩阵应在此矩阵结果元数据中报告。该变换应将输出颜色值的幅值保持在 [0, 1.0] 范围内(假设输入颜色值在归一化范围 [0, 1.0] 内),否则可能会发生裁剪。

每个矩阵元素的有效范围因设备而异,但保证 [-1.5, 3.0] 范围内的值不会被裁剪。

另请参阅: ACAMERA_COLOR_CORRECTION_MODE

ACAMERA_CONTROL_AE_ANTIBANDING_MODE

相机设备自动曝光算法防条纹补偿的期望设置。

类型:byte (acamera_metadata_enum_android_control_ae_antibanding_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

某些照明设备,例如一些荧光灯,以电源频率(60Hz 或 50Hz,取决于国家/地区)闪烁。虽然这对人来说通常不易察觉,但相机设备可以看到。如果相机将其曝光时间设置为错误的值,闪烁可能会在取景器中显示为闪烁,或在最终捕获的图像中显示为图像上的一组可变亮度条带。

因此,相机设备的自动曝光例程包含防条纹例程,以确保所选的曝光值不会引起此类条纹。曝光时间的选择取决于闪烁速率,相机设备可以自动检测闪烁速率,或者应用可以使用此控件选择预期的速率。

给定的相机设备可能不支持防条纹模式的所有可能选项。ACAMERA_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES 键包含给定相机设备的可用模式。

如果在给定相机设备上可用,AUTO 模式为默认模式。当 AUTO 模式不可用时,默认模式将为 50HZ 或 60HZ,并且 50HZ 和 60HZ 都将可用。

如果启用了手动曝光控制(通过将 ACAMERA_CONTROL_AE_MODE 或 ACAMERA_CONTROL_MODE 设置为 OFF),则此设置无效,并且应用必须确保选择不会引起条纹问题的曝光时间。ACAMERA_STATISTICS_SCENE_FLICKER 键可以帮助应用完成此操作。

另请参阅: ACAMERA_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES 另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_STATISTICS_SCENE_FLICKER

ACAMERA_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES

此相机设备支持的 ACAMERA_CONTROL_AE_ANTIBANDING_MODE 的自动曝光防条纹模式列表。

另请参阅: ACAMERA_CONTROL_AE_ANTIBANDING_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

给定的相机设备可能不支持所有自动曝光防条纹模式。此字段列出了应用可以使用 ACAMERA_CONTROL_AE_ANTIBANDING_MODE 控制为此相机设备请求的有效防条纹模式。

另请参阅: ACAMERA_CONTROL_AE_ANTIBANDING_MODE

ACAMERA_CONTROL_AE_AVAILABLE_MODES

此相机设备支持的 ACAMERA_CONTROL_AE_MODE 的自动曝光模式列表。

另请参阅: ACAMERA_CONTROL_AE_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

给定的相机设备可能不支持所有自动曝光模式,特别是如果没有闪光灯单元可用时。此条目列出了此相机设备的 ACAMERA_CONTROL_AE_MODE 的有效模式。

所有相机设备都支持 ON,并且所有带有闪光灯单元的相机设备都支持 ON_AUTO_FLASH 和 ON_ALWAYS_FLASH。

FULL 模式相机设备始终支持 OFF 模式,这使得应用能够控制相机曝光时间、灵敏度和帧时长。

LEGACY 模式相机设备从不支持 OFF 模式。如果 LIMITED 模式设备支持 MANUAL_SENSOR 功能,则支持 OFF。

另请参阅: ACAMERA_CONTROL_AE_MODE

ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES

此相机设备支持的 ACAMERA_CONTROL_AE_TARGET_FPS_RANGE 的帧速率范围列表。

另请参阅: ACAMERA_CONTROL_AE_TARGET_FPS_RANGE

类型:int32[2*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

对于 LEGACY 级别或更高级别的设备

对于 LIMITED 级别或更高级别的设备

  • 对于在 ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT 中宣传 NIR 颜色滤镜排列的设备,此列表将始终包含 (max, max),其中 max = 最大 YUV_420_888 输出尺寸的最大输出帧速率。
  • 对于宣传 NIR 以外的任何颜色滤镜排列的设备,或未宣传颜色滤镜排列的设备,此列表将始终包含 (min, max) 和 (max, max),其中 min <= 15 且 max = 最大 YUV_420_888 输出尺寸的最大输出帧速率。

另请参阅: ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT

ACAMERA_CONTROL_AE_COMPENSATION_RANGE

此相机设备支持的 ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION 最大和最小曝光补偿值(以 ACAMERA_CONTROL_AE_COMPENSATION_STEP 为单位计算)。

另请参阅: ACAMERA_CONTROL_AE_COMPENSATION_STEP 另请参阅: ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_CONTROL_AE_COMPENSATION_STEP

曝光补偿可以更改的最小步长。

类型:rational

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是 ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION 的单位。例如,如果此键的值为 1/2,则 ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION 的设置为 -2 意味着自动曝光例程的目标 EV 偏移为 -1 EV。

一单位的 EV 补偿将捕获图像的亮度改变一倍。+1 EV 使图像亮度加倍,而 -1 EV 使图像亮度减半。

另请参阅: ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION

ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION

自动曝光 (AE) 目标图像亮度的调整。

类型:int32

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

调整以步数衡量,步长由 ACAMERA_CONTROL_AE_COMPENSATION_STEP 定义,允许范围由 ACAMERA_CONTROL_AE_COMPENSATION_RANGE 定义。

例如,如果曝光值 (EV) 步长为 0.333,则 '6' 表示 +2 EV 的曝光补偿;-3 表示 -1 EV 的曝光补偿。一单位 EV 表示图像亮度加倍。请注意,此控制仅在 ACAMERA_CONTROL_AE_MODE != OFF 时有效。即使 ACAMERA_CONTROL_AE_LOCK == true,此控制也会生效。

如果曝光补偿值发生变化,相机设备可能需要几帧才能达到新请求的曝光目标。在此期间,ACAMERA_CONTROL_AE_STATE 字段将处于 SEARCHING 状态。一旦达到新的曝光目标,ACAMERA_CONTROL_AE_STATE 将从 SEARCHING 更改为 CONVERGED、LOCKED(如果启用了 AE 锁定)或 FLASH_REQUIRED(如果场景太暗无法进行静态捕获)。

另请参阅: ACAMERA_CONTROL_AE_COMPENSATION_RANGE 另请参阅: ACAMERA_CONTROL_AE_COMPENSATION_STEP 另请参阅: ACAMERA_CONTROL_AE_LOCK 另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AE_STATE

ACAMERA_CONTROL_AE_LOCK

自动曝光 (AE) 当前是否锁定在其最新的计算值。

类型:byte (acamera_metadata_enum_android_control_ae_lock_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

当设置为 true (ON) 时,AE 算法被锁定在其最新参数上,并且在将锁定设置为 false (OFF) 之前不会更改曝光设置。

请注意,即使 AE 锁定,如果 ACAMERA_CONTROL_AE_MODE 设置为 ON_AUTO_FLASH / ON_ALWAYS_FLASH / ON_AUTO_FLASH_REDEYE,闪光灯仍可能闪光。

更改 ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION 时,即使 AE 锁定为 ON,相机设备仍会调整其曝光值。

如果在 AE 已锁定时触发了 AE 预捕获(请参阅 ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER),相机设备将不会更改曝光时间(ACAMERA_SENSOR_EXPOSURE_TIME)和感光度(ACAMERA_SENSOR_SENSITIVITY)参数。如果 ACAMERA_CONTROL_AE_MODEON_AUTO_FLASH/ON_AUTO_FLASH_REDEYE 且场景太暗,闪光灯可能会闪光。如果 ACAMERA_CONTROL_AE_MODEON_ALWAYS_FLASH,场景可能会过度曝光。同样,当 AE 已锁定时,AE 预捕获触发器 CANCEL 无效。

触发 AE 预捕获序列时,如果在预捕获测光序列期间相机设备内部锁定了 AE,则 AE 解锁将无法解锁 AE。换句话说,对于正在进行的预捕获测光序列,提交带有 AE 解锁的请求无效。否则,在预览请求序列中,如果 AE 锁定始终设置为 false,则预捕获测光序列将永远不会成功。

由于相机设备具有正在处理的请求流水线,因此锁定的设置不一定与从相机设备接收到的最新捕获结果中的设置相对应,因为即使在发送结果之前,也可能发生了额外的捕获和 AE 更新。如果应用程序在自动控制和手动控制之间切换,并希望消除切换过程中的任何闪烁,建议采用以下步骤

  1. 从自动 AE 模式开始
  2. 锁定 AE
  3. 等待输出第一个包含 AE 锁定状态的结果
  4. 将该结果中的曝光设置复制到请求中,并将请求设置为手动 AE
  5. 提交捕获请求,然后按需运行手动 AE。

有关 AE 锁定相关的状态转换详细信息,请参阅 ACAMERA_CONTROL_AE_STATE

另请参阅: ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION 另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_CONTROL_AE_STATE 另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_CONTROL_AE_LOCK_AVAILABLE

相机设备是否支持 ACAMERA_CONTROL_AE_LOCK

另请参阅: ACAMERA_CONTROL_AE_LOCK

类型:byte (acamera_metadata_enum_android_control_ae_lock_available_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

支持 MANUAL_SENSOR 功能或 BURST_CAPTURE 功能的设备将始终列出 true。这包括 FULL 设备。

ACAMERA_CONTROL_AE_MODE

相机设备的自动曝光例程所需的模式。

类型:byte (acamera_metadata_enum_android_control_ae_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此控制仅在 ACAMERA_CONTROL_MODEAUTO 时有效。

设置为任何 ON 模式时,相机设备的自动曝光例程将启用,覆盖应用程序选择的曝光时间、传感器感光度以及帧持续时间(ACAMERA_SENSOR_EXPOSURE_TIMEACAMERA_SENSOR_SENSITIVITYACAMERA_SENSOR_FRAME_DURATION)。如果选择任何 FLASH 模式,相机设备的闪光灯控制也将被覆盖。

仅当相机设备具有闪光灯单元(ACAMERA_FLASH_INFO_AVAILABLEtrue)时,FLASH 模式才可用。

如果需要闪光灯 TORCH 模式,此字段必须设置为 ONOFF,且 ACAMERA_FLASH_MODE 设置为 TORCH

设置为任何 ON 模式时,相机设备的自动曝光例程为给定捕获选择的被覆盖字段的值将在其 CaptureResult 中提供。

另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_FLASH_INFO_AVAILABLE 另请参阅: ACAMERA_FLASH_MODE 另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER

相机设备在处理此请求时是否会触发预捕获测光序列。

类型:byte (acamera_metadata_enum_android_control_ae_precapture_trigger_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此条目通常设置为 IDLE,或者根本不包含在请求设置中。当包含并设置为 START 时,相机设备将触发自动曝光 (AE) 预捕获测光序列。

设置为 CANCEL 时,相机设备将取消任何活动的预捕获测光触发器,并返回到其初始 AE 状态。如果预捕获测光序列已完成,并且相机设备已隐式锁定 AE 以进行后续的静止捕获,则 CANCEL 触发器将解锁 AE 并返回其初始 AE 状态。

在启动高质量静止捕获之前应触发预捕获序列,以便做出最终测光决策,并在启用闪光灯时,发射预捕获闪光脉冲以估计场景亮度所需的最终捕获闪光功率。

在预捕获序列期间,满足以下条件时启用闪光灯:

  • AE 模式为 ON_ALWAYS_FLASH
  • AE 模式为 ON_AUTO_FLASH 且场景在没有闪光灯的情况下被认为太暗,或者
  • AE 模式为 ON 且闪光灯模式为 TORCHSINGLE

通常,此条目仅应针对单个请求设置为 START,并且应用程序应等待序列完成,然后才能启动新序列。

预捕获测光序列完成后,相机设备可以在内部锁定自动曝光例程,以便准确曝光后续的静止捕获图像(ACAMERA_CONTROL_CAPTURE_INTENT == STILL_CAPTURE)。对于这种情况,如果在没有后续静止捕获提交的情况下,AE 可能不会恢复正常扫描。为确保 AE 例程重新开始正常扫描,如果应用程序在预捕获序列完成后决定不提交静止捕获请求,则应先提交一个 ACAMERA_CONTROL_AE_LOCK == true 的请求,然后提交一个 ACAMERA_CONTROL_AE_LOCK == false 的请求。或者,对于 API level 23 或更高版本的设备,如果应用程序在 AE 预捕获触发后未提交静止捕获请求,则可以使用 CANCEL 解锁相机设备内部锁定的 AE。请注意,CANCEL 是在 API level 23 中添加的,不得用于 API level 低于此版本的设备。

自动曝光 (AE) 预捕获触发器的确切效果取决于当前的 AE 模式和状态;有关 AE 预捕获状态转换详细信息,请参阅 ACAMERA_CONTROL_AE_STATE

在 LEGACY 级别设备上,不支持预捕获触发器;捕获高分辨率 JPEG 图像将在高分辨率捕获之前自动触发预捕获序列,包括可能闪烁预捕获闪光灯。

允许同时使用预捕获触发器和自动对焦触发器 ACAMERA_CONTROL_AF_TRIGGER。然而,由于这些触发器通常需要自动对焦和自动曝光例程之间的协作(例如,可能需要启用对焦扫描),相机设备可能会延迟响应后一个触发器,直到前一个触发器已完全处理。例如,这可能导致触发器与指示预捕获序列开始的 ACAMERA_CONTROL_AE_STATE 更改之间的时间间隔更长。

如果在同一请求中同时激活预捕获和自动对焦触发器,相机设备将按照对该设备最优的顺序完成它们。

另请参阅: ACAMERA_CONTROL_AE_LOCK 另请参阅: ACAMERA_CONTROL_AE_STATE 另请参阅: ACAMERA_CONTROL_AF_TRIGGER 另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

ACAMERA_CONTROL_AE_REGIONS

用于自动曝光调整的测光区域列表。

类型:int32[5*area_count]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

如果 android.control.maxRegionsAe 为 0,则不可用。否则始终存在。

设备支持的最大区域数量由 android.control.maxRegionsAe 的值确定。

对于不支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系始终遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的坐标系,其中 (0,0) 是活动像素阵列的左上角像素,(ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.height - 1) 是活动像素阵列的右下角像素。

对于支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系取决于所设置的模式。当畸变校正模式为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是预校正活动阵列的左上角像素,(ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.height - 1) 是预校正活动像素阵列的右下角像素。当畸变校正模式不为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是活动阵列的左上角像素,(ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.height - 1) 是活动像素阵列的右下角像素。

权重必须在 [0, 1000] 范围内,表示区域内每个像素的权重。这意味着具有相同权重的较大测光区域将在测光结果中产生更大影响。测光区域可以部分重叠,相机设备将叠加区域中的权重相加。

权重是相对于其他曝光测光区域的权重而言的,因此如果只使用一个区域,所有非零权重将具有相同的效果。权重为 0 的区域将被忽略。

如果所有区域的权重都为 0,则相机设备无需使用特定的测光区域。

如果测光区域超出捕获结果元数据中返回的使用的 ACAMERA_SCALER_CROP_REGION,相机设备将忽略作物区域外的部分,并在结果元数据中仅输出交集矩形作为测光区域。如果区域完全超出作物区域,它将被忽略且不会在结果元数据中报告。

设置 AE 测光区域时,应用程序必须考虑预览流和 ACAMERA_SCALER_CROP_REGION 之间的宽高比差异造成的额外作物。例如,如果 ACAMERA_SCALER_CROP_REGION 是宽高比为 4:3 的完整活动阵列大小,而预览流是 16:9,则 AE 区域的边界将是 [0, y_crop] 和 [active_width, active_height - 2 * y_crop],而不是 [0, 0] 和 [active_width, active_height],其中 y_crop 是由于宽高比不匹配造成的额外作物。

从 API level 30 开始,activeArraySize 或 preCorrectionActiveArraySize 的坐标系用于表示 post-zoomRatio 视野,而不是 pre-zoom 视野。这意味着在不同的 ACAMERA_CONTROL_ZOOM_RATIO 下,相同的 aeRegions 值代表场景的不同部分。aeRegions 坐标是相对于表示缩放视野的 activeArray/preCorrectionActiveArray 的。如果 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0(默认值),则在不同的 ACAMERA_SCALER_CROP_REGION 下,相同的 aeRegions 仍代表场景的相同部分,就像它们之前一样。有关详细信息,请参阅 ACAMERA_CONTROL_ZOOM_RATIO。使用 activeArraySize 还是 preCorrectionActiveArraySize 仍然取决于畸变校正模式。

对于具有 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的相机设备,或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,必须使用 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION / ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 作为请求的坐标系。

数据表示为 int[5 * area_count]。每五个元素表示一个测光区域 (xmin, ymin, xmax, ymax, weight)。矩形定义为包含 xmin 和 ymin,但不包含 xmax 和 ymax。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_DISTORTION_CORRECTION_MODE 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_CONTROL_AE_STATE

自动曝光 (AE) 算法的当前状态。

类型:byte (acamera_metadata_enum_android_control_ae_state_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

切换或启用 AE 模式(ACAMERA_CONTROL_AE_MODE)始终将 AE 状态重置为 INACTIVE。同样,切换 ACAMERA_CONTROL_MODEACAMERA_CONTROL_SCENE_MODE(如果 ACAMERA_CONTROL_MODE == USE_SCENE_MODE)将所有算法状态重置为 INACTIVE

相机设备可以在两个结果之间进行多次状态转换,如果状态转换表允许。例如:结果中可能永远看不到 INACTIVE

结果中的状态是此图像(与此图像同步)的状态:如果 AE 状态变为 CONVERGED,则与此结果关联的图像数据应可供使用。

以下是不同 AE 模式的状态转换表。

状态 转换原因 新状态 备注
INACTIVE INACTIVE 相机设备自动曝光算法已禁用

ACAMERA_CONTROL_AE_MODEAE_MODE_ON*

状态 转换原因 新状态 备注
INACTIVE 相机设备启动 AE 扫描 SEARCHING 值正在改变
INACTIVE ACAMERA_CONTROL_AE_LOCKON LOCKED 值已锁定
SEARCHING 相机设备完成 AE 扫描 CONVERGED 值良好,未改变
SEARCHING 相机设备完成 AE 扫描 FLASH_REQUIRED 已收敛但无闪光灯时太暗
SEARCHING ACAMERA_CONTROL_AE_LOCKON LOCKED 值已锁定
CONVERGED 相机设备启动 AE 扫描 SEARCHING 值正在改变
CONVERGED ACAMERA_CONTROL_AE_LOCKON LOCKED 值已锁定
FLASH_REQUIRED 相机设备启动 AE 扫描 SEARCHING 值正在改变
FLASH_REQUIRED ACAMERA_CONTROL_AE_LOCKON LOCKED 值已锁定
LOCKED ACAMERA_CONTROL_AE_LOCKOFF SEARCHING 解锁后值不佳
LOCKED ACAMERA_CONTROL_AE_LOCKOFF CONVERGED 解锁后值良好
LOCKED ACAMERA_CONTROL_AE_LOCKOFF FLASH_REQUIRED 曝光良好,但太暗
PRECAPTURE 序列完成。ACAMERA_CONTROL_AE_LOCKOFF CONVERGED 已准备好进行高质量捕获
PRECAPTURE 序列完成。ACAMERA_CONTROL_AE_LOCKON LOCKED 已准备好进行高质量捕获
LOCKED aeLock 为 ON 且 aePrecaptureTrigger 为 START LOCKED AE 已锁定时忽略预捕获触发器
LOCKED aeLock 为 ON 且 aePrecaptureTrigger 为 CANCEL LOCKED AE 已锁定时忽略预捕获触发器
任何状态(不包括 LOCKED) ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGERSTART PRECAPTURE 启动 AE 预捕获测光序列
任何状态(不包括 LOCKED) ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGERCANCEL INACTIVE 当前活动的预捕获测光序列被取消

如果相机设备支持 AE 外部闪光模式(ACAMERA_CONTROL_AE_AVAILABLE_MODES 中包含 ON_EXTERNAL_FLASH),则在相机设备完成 AE 扫描且无闪光灯时太暗后,ACAMERA_CONTROL_AE_STATE 必须为 FLASH_REQUIRED

对于上述表格,如果状态转换表允许,相机设备可能会跳过报告在没有应用程序干预(即模式切换、触发、锁定)的情况下发生的任何状态更改。以这种方式可以跳过的任何状态都称为瞬态。

例如,对于上述 AE 模式(AE_MODE_ON*),除了上述表格中列出的状态转换之外,相机设备在两个结果之间跳过一个或多个瞬态也是合法的。请参阅下表示例

状态 转换原因 新状态 备注
INACTIVE 相机设备完成 AE 扫描 CONVERGED 值已良好,相机设备跳过了瞬态。
任何状态(不包括 LOCKED) ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGERSTART,序列完成 FLASH_REQUIRED 预捕获序列后已收敛但无闪光灯时太暗,相机设备跳过了瞬态。
任何状态(不包括 LOCKED) ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGERSTART,序列完成 CONVERGED 预捕获序列后已收敛,相机设备跳过了瞬态。
任何状态(不包括 LOCKED) ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGERCANCEL,已收敛 FLASH_REQUIRED 预捕获序列取消后已收敛但无闪光灯时太暗,相机设备跳过了瞬态。
任何状态(不包括 LOCKED) ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGERCANCEL,已收敛 CONVERGED 预捕获序列取消后已收敛,相机设备跳过了瞬态。
CONVERGED 相机设备完成 AE 扫描 FLASH_REQUIRED 新扫描后已收敛但无闪光灯时太暗,相机设备跳过了瞬态。
FLASH_REQUIRED 相机设备完成 AE 扫描 CONVERGED 新扫描后已收敛,相机设备跳过了瞬态。
另请参阅: ACAMERA_CONTROL_AE_AVAILABLE_MODES 另请参阅: ACAMERA_CONTROL_AE_LOCK 另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_CONTROL_AE_STATE 另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_CONTROL_SCENE_MODE

ACAMERA_CONTROL_AE_TARGET_FPS_RANGE

自动曝光例程可以调整捕获帧率以维持良好曝光的范围。

类型:int32[2]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

仅限制自动曝光 (AE) 算法,不限制 ACAMERA_SENSOR_EXPOSURE_TIMEACAMERA_SENSOR_FRAME_DURATION 的手动控制。

请注意,实际可达到的最大帧率也取决于输出流的最小帧持续时间。最大帧率将是 min(aeTargetFpsRange.maxFps, 1 / max(individual stream min durations))。例如,如果应用程序将此键设置为 {60, 60},但所有已配置流的最大最小帧持续时间是 33ms,则最大帧率不会是 60fps,而是 30fps。

要以与捕获请求模板的默认值不同的目标 FPS 范围启动 CaptureSession,强烈建议应用程序在创建捕获会话之前调用 ACameraDevice_createCaptureSessionWithSessionParameters 并指定目标 fps 范围。aeTargetFpsRange 通常是会话参数。在会话创建时指定它有助于避免在 60fps 或高速录制等情况下出现会话重新配置延迟。

另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_FRAME_DURATION

ACAMERA_CONTROL_AF_AVAILABLE_MODES

此相机设备支持的 ACAMERA_CONTROL_AF_MODE 的自动对焦 (AF) 模式列表。

另请参阅: ACAMERA_CONTROL_AF_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

并非所有自动对焦模式都可能由给定的相机设备支持。此条目列出了此相机设备的 ACAMERA_CONTROL_AF_MODE 的有效模式。

所有 LIMITED 和 FULL 模式相机设备都支持 OFF 模式,并且所有具有可调节对焦单元的相机设备(ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE > 0)都支持 AUTO 模式。

LEGACY 设备仅在支持对焦到无穷远(通过同时将 ACAMERA_LENS_FOCUS_DISTANCE 设置为 0.0f)时才支持 OFF 模式。

另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_LENS_FOCUS_DISTANCE 另请参阅: ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE

ACAMERA_CONTROL_AF_MODE

自动对焦 (AF) 当前是否启用,以及设置为何种模式。

类型:byte (acamera_metadata_enum_android_control_af_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

仅在 ACAMERA_CONTROL_MODE = AUTO 且镜头不是固定对焦(即 ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE > 0)时有效。另请注意,当 ACAMERA_CONTROL_AE_MODEOFF 时,AF 的行为取决于设备。建议在将 ACAMERA_CONTROL_AE_MODE 设置为 OFF 之前使用 ACAMERA_CONTROL_AF_TRIGGER 锁定 AF,或者在 AE 为 OFF 时将 AF 模式设置为 OFF

如果镜头由相机设备自动对焦算法控制,相机设备将在结果元数据中的 ACAMERA_CONTROL_AF_STATE 中报告当前的 AF 状态。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AF_STATE 另请参阅: ACAMERA_CONTROL_AF_TRIGGER 另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE

ACAMERA_CONTROL_AF_REGIONS

用于自动对焦的测光区域列表。

类型:int32[5*area_count]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

如果 android.control.maxRegionsAf 为 0,则不可用。否则始终存在。

设备支持的最大对焦区域数量由 android.control.maxRegionsAf 的值确定。

对于不支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系始终遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的坐标系,其中 (0,0) 是活动像素阵列的左上角像素,(ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.height - 1) 是活动像素阵列的右下角像素。

对于支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系取决于所设置的模式。当畸变校正模式为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是预校正活动阵列的左上角像素,(ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.height - 1) 是预校正活动像素阵列的右下角像素。当畸变校正模式不为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是活动阵列的左上角像素,(ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.height - 1) 是活动像素阵列的右下角像素。

权重必须在 [0, 1000] 范围内,表示区域内每个像素的权重。这意味着具有相同权重的较大测光区域将在测光结果中产生更大影响。测光区域可以部分重叠,相机设备将叠加区域中的权重相加。

权重是相对于其他测光区域的权重而言的,因此如果只使用一个区域,所有非零权重将具有相同的效果。权重为 0 的区域将被忽略。

如果所有区域的权重都为 0,则相机设备无需使用特定的测光区域。捕获结果将是权重为零的区域,或者相机设备选择的感兴趣的对焦区域。

如果测光区域超出捕获结果元数据中返回的使用的 ACAMERA_SCALER_CROP_REGION,相机设备将忽略作物区域外的部分,并在结果元数据中仅输出交集矩形作为测光区域。如果区域完全超出作物区域,它将被忽略且不会在结果元数据中报告。

设置 AF 测光区域时,应用程序必须考虑预览流和 ACAMERA_SCALER_CROP_REGION 之间的宽高比差异造成的额外作物。例如,如果 ACAMERA_SCALER_CROP_REGION 是宽高比为 4:3 的完整活动阵列大小,而预览流是 16:9,则 AF 区域的边界将是 [0, y_crop] 和 [active_width, active_height - 2 * y_crop],而不是 [0, 0] 和 [active_width, active_height],其中 y_crop 是由于宽高比不匹配造成的额外作物。

从 API level 30 开始,activeArraySize 或 preCorrectionActiveArraySize 的坐标系用于表示 post-zoomRatio 视野,而不是 pre-zoom 视野。这意味着在不同的 ACAMERA_CONTROL_ZOOM_RATIO 下,相同的 afRegions 值代表场景的不同部分。afRegions 坐标是相对于表示缩放视野的 activeArray/preCorrectionActiveArray 的。如果 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0(默认值),则在不同的 ACAMERA_SCALER_CROP_REGION 下,相同的 afRegions 仍代表场景的相同部分,就像它们之前一样。有关详细信息,请参阅 ACAMERA_CONTROL_ZOOM_RATIO。使用 activeArraySize 还是 preCorrectionActiveArraySize 仍然取决于畸变校正模式。

对于具有 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的相机设备,或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,必须使用 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION / ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 作为请求的坐标系。

数据表示为 int[5 * area_count]。每五个元素表示一个测光区域 (xmin, ymin, xmax, ymax, weight)。矩形定义为包含 xmin 和 ymin,但不包含 xmax 和 ymax。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_DISTORTION_CORRECTION_MODE 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_CONTROL_AF_SCENE_CHANGE

在当前设置的 AF 区域内是否检测到显著的场景变化。

类型:byte (acamera_metadata_enum_android_control_af_scene_change_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

当相机对焦例程检测到其正在查看的场景发生变化时,例如相机视点发生较大偏移、场景中出现显著运动或显著的光照变化时,此值将在单个捕获结果中设置为 DETECTED。否则,该值将为 NOT_DETECTED。检测阈值类似于在 CONTINUOUS 自动对焦模式下会触发新的被动对焦扫描开始的阈值。

如果相机设备通过 ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS 宣布此键,则此键将可用。

ACAMERA_CONTROL_AF_STATE

自动对焦 (AF) 算法的当前状态。

类型:byte (acamera_metadata_enum_android_control_af_state_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

切换或启用 AF 模式(ACAMERA_CONTROL_AF_MODE)始终将 AF 状态重置为 INACTIVE。同样,切换 ACAMERA_CONTROL_MODEACAMERA_CONTROL_SCENE_MODE(如果 ACAMERA_CONTROL_MODE == USE_SCENE_MODE)将所有算法状态重置为 INACTIVE

相机设备可以在两个结果之间进行多次状态转换,如果状态转换表允许。例如:结果中可能永远看不到 INACTIVE

结果中的状态是此图像(与此图像同步)的状态:如果 AF 状态变为 FOCUSED,则与此结果关联的图像数据应清晰。

以下是不同 AF 模式的状态转换表。

ACAMERA_CONTROL_AF_MODEAF_MODE_OFFAF_MODE_EDOF

状态 转换原因 新状态 备注
INACTIVE INACTIVE 从不更改

ACAMERA_CONTROL_AF_MODEAF_MODE_AUTOAF_MODE_MACRO

状态 转换原因 新状态 备注
INACTIVE AF_TRIGGER ACTIVE_SCAN 启动 AF 扫描,镜头当前移动
ACTIVE_SCAN AF 扫描完成 FOCUSED_LOCKED 已对焦,镜头当前锁定
ACTIVE_SCAN AF 扫描完成 NOT_FOCUSED_LOCKED 未对焦,镜头当前锁定
ACTIVE_SCAN AF_CANCEL INACTIVE 取消/重置 AF,镜头当前锁定
FOCUSED_LOCKED AF_CANCEL INACTIVE 取消/重置 AF
FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN 启动新扫描,镜头当前移动
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE 取消/重置 AF
NOT_FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN 启动新扫描,镜头当前移动
任何状态 模式更改 INACTIVE

对于上述表格,如果状态转换表允许,相机设备可能会跳过报告在没有应用程序干预(即模式切换、触发、锁定)的情况下发生的任何状态更改。以这种方式可以跳过的任何状态都称为瞬态。

例如,对于这些 AF 模式(AF_MODE_AUTOAF_MODE_MACRO),除了上述表格中列出的状态转换之外,相机设备在两个结果之间跳过一个或多个瞬态也是合法的。请参阅下表示例

状态 转换原因 新状态 备注
INACTIVE AF_TRIGGER FOCUSED_LOCKED 对焦已良好或扫描后良好,镜头当前已锁定。
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED 扫描后对焦失败,镜头当前已锁定。
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED 对焦已良好或扫描后良好,镜头当前已锁定。
NOT_FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED 扫描后对焦良好,镜头未锁定。

ACAMERA_CONTROL_AF_MODEAF_MODE_CONTINUOUS_VIDEO

状态 转换原因 新状态 备注
INACTIVE 相机设备启动新扫描 PASSIVE_SCAN 启动 AF 扫描,镜头当前移动
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED AF 状态查询,镜头当前锁定
PASSIVE_SCAN 相机设备完成当前扫描 PASSIVE_FOCUSED 结束 AF 扫描,镜头当前锁定
PASSIVE_SCAN 相机设备当前扫描失败 PASSIVE_UNFOCUSED 结束 AF 扫描,镜头当前锁定
PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED 即时转换,如果对焦良好。镜头当前锁定
PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED 即时转换,如果对焦不良。镜头当前锁定
PASSIVE_SCAN AF_CANCEL INACTIVE 重置镜头位置,镜头当前锁定
PASSIVE_FOCUSED 相机设备启动新扫描 PASSIVE_SCAN 启动 AF 扫描,镜头当前移动
PASSIVE_UNFOCUSED 相机设备启动新扫描 PASSIVE_SCAN 启动 AF 扫描,镜头当前移动
PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED 即时转换,镜头当前锁定
PASSIVE_UNFOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED 即时转换,镜头当前锁定
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED 无效果
FOCUSED_LOCKED AF_CANCEL INACTIVE 重新启动 AF 扫描
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED 无效果
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE 重新启动 AF 扫描

ACAMERA_CONTROL_AF_MODEAF_MODE_CONTINUOUS_PICTURE

状态 转换原因 新状态 备注
INACTIVE 相机设备启动新扫描 PASSIVE_SCAN 启动 AF 扫描,镜头当前移动
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED AF 状态查询,镜头当前锁定
PASSIVE_SCAN 相机设备完成当前扫描 PASSIVE_FOCUSED 结束 AF 扫描,镜头当前锁定
PASSIVE_SCAN 相机设备当前扫描失败 PASSIVE_UNFOCUSED 结束 AF 扫描,镜头当前锁定
PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED 一旦对焦良好,最终转换。镜头当前锁定
PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED 如果无法找到对焦,最终转换。镜头当前锁定
PASSIVE_SCAN AF_CANCEL INACTIVE 重置镜头位置,镜头当前锁定
PASSIVE_FOCUSED 相机设备启动新扫描 PASSIVE_SCAN 启动 AF 扫描,镜头当前移动
PASSIVE_UNFOCUSED 相机设备启动新扫描 PASSIVE_SCAN 启动 AF 扫描,镜头当前移动
PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED 即时转换。镜头当前锁定
PASSIVE_UNFOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED 即时转换。镜头当前锁定
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED 无效果
FOCUSED_LOCKED AF_CANCEL INACTIVE 重新启动 AF 扫描
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED 无效果
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE 重新启动 AF 扫描

在切换 AF_MODE_CONTINUOUS_* (CAF modes) 和 AF_MODE_AUTO/AF_MODE_MACRO (AUTO modes) 时,相机设备可能会跳过初始的 INACTIVEPASSIVE_SCAN 状态。当模式切换请求中包含触发器时,触发器将在请求中新模式的上下文中进行评估。请参阅下表示例

状态 转换原因 新状态 备注
任何状态 CAF>AUTO 模式切换 INACTIVE 无触发器的模式切换,初始状态必须是 INACTIVE
任何状态 CAF>AUTO 模式切换,带 AF_TRIGGER 从 INACTIVE 可达的状态 带触发器的模式切换,跳过 INACTIVE
任何状态 AUTO>CAF 模式切换 从 INACTIVE 被动可达的状态 无触发器的模式切换,跳过被动瞬态
另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_CONTROL_SCENE_MODE

ACAMERA_CONTROL_AF_TRIGGER

相机设备是否会为此请求触发自动对焦。

类型:byte (acamera_metadata_enum_android_control_af_trigger_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此条目通常设置为 IDLE,或者根本不包含在请求设置中。

当包含并设置为 START 时,相机设备将触发自动对焦算法。如果自动对焦被禁用,此触发器无效。

设置为 CANCEL 时,相机设备将取消任何活动的触发器,并返回到其初始 AF 状态。

通常,应用程序应仅对单个捕获将此条目设置为 STARTCANCEL,然后将其返回到 IDLE(或完全不设置)。为连续多个捕获指定 START 意味着一遍又一遍地重新启动 AF 操作。

对于每种 AF 模式,触发器的含义请参阅 ACAMERA_CONTROL_AF_STATE

允许同时使用自动对焦触发器和预捕获触发器 ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER。然而,由于这些触发器通常需要自动对焦和自动曝光例程之间的协作(例如,可能需要启用对焦扫描),相机设备可能会延迟响应后一个触发器,直到前一个触发器已完全处理。例如,这可能导致触发器与 ACAMERA_CONTROL_AF_STATE 更改之间的时间间隔更长。

另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_CONTROL_AF_STATE

ACAMERA_CONTROL_AUTOFRAMING

自动裁剪、平移和缩放以将对象保持在画框中心。

类型:byte (acamera_metadata_enum_android_control_autoframing_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

自动构图是相机设备提供的一种特殊模式,用于动态裁剪、缩放或平移相机画面,以努力确保场景中的人物占据视口合理的部分。它主要设计用于支持用户不在设备正前方时的视频通话,特别是对于广角相机。ACAMERA_SCALER_CROP_REGION 和 CaptureResult 中的 ACAMERA_CONTROL_ZOOM_RATIO 将用于表示自动构图区域的坐标。启用自动构图时,缩放和视频稳定控制将被禁用。3A 区域必须将屏幕坐标映射到从捕获结果返回的缩放裁剪区域,而不是使用活动阵列传感器。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_SCALER_CROP_REGION

ACAMERA_CONTROL_AUTOFRAMING_AVAILABLE

相机设备是否支持 ACAMERA_CONTROL_AUTOFRAMING

另请参阅: ACAMERA_CONTROL_AUTOFRAMING

类型:byte (acamera_metadata_enum_android_control_autoframing_available_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果自动构图不可用,则为 false

ACAMERA_CONTROL_AUTOFRAMING_STATE

自动构图的当前状态。

类型:byte (acamera_metadata_enum_android_control_autoframing_state_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

当相机不支持自动构图(即 ACAMERA_CONTROL_AUTOFRAMING_AVAILABLE == false)或未启用(即 ACAMERA_CONTROL_AUTOFRAMING == OFF)时,状态将始终为 INACTIVE。其他状态表示当前的自动构图状态

  • ACAMERA_CONTROL_AUTOFRAMING 设置为 ON 时,将进行自动构图。当画框正在调整自身以将对象居中(执行诸如放大、缩小或平移等操作)时,状态将为 FRAMING
  • 当视野不再调整并达到稳定状态时,状态将为 CONVERGED

另请参阅: ACAMERA_CONTROL_AUTOFRAMING 另请参阅: ACAMERA_CONTROL_AUTOFRAMING_AVAILABLE

ACAMERA_CONTROL_AVAILABLE_EFFECTS

此相机设备支持的 ACAMERA_CONTROL_EFFECT_MODE 的颜色效果列表。

另请参阅: ACAMERA_CONTROL_EFFECT_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此列表包含可以应用于相机设备生成的图像的颜色效果模式。不同设备上的实现不应期望一致。如果设备没有可用的颜色效果模式,此列表将仅列出 OFF

只有当 ACAMERA_CONTROL_MODE != OFF 时才会应用颜色效果。OFF 始终包含在此列表中。

此控制对自动曝光、白平衡或对焦等其他控制例程的操作没有影响。

另请参阅: ACAMERA_CONTROL_MODE

ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES

此相机设备支持的 ACAMERA_CONTROL_EXTENDED_SCENE_MODE 的扩展场景模式列表,以及每个扩展场景模式在效果生效时的最大流式传输(非停顿)尺寸。

另请参阅: ACAMERA_CONTROL_EXTENDED_SCENE_MODE

类型:int32[3*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

对于 DISABLED 模式,相机正常运行,未启用扩展场景模式。

对于 BOKEH_STILL_CAPTURE 模式,最大流式传输尺寸指定了捕获意图为 PREVIEW 时散景有效的限制。请注意,当捕获意图为 PREVIEW 时,为了维持合理的帧率,散景效果的质量可能不如捕获意图为 STILL_CAPTURE 时的高。最大流式传输尺寸必须是 availableStreamConfigurations 中 YUV_420_888PRIVATE 分辨率之一,或者如果不支持预览散景,则为 (0, 0)。如果应用程序配置的流大于最大流式传输尺寸,则对于 PREVIEW 意图,可能不会对该流应用散景效果。

对于 BOKEH_CONTINUOUS 模式,最大流式传输尺寸指定了散景有效的限制。此尺寸必须是 availableStreamConfigurations 中 YUV_420_888PRIVATE 分辨率之一,并且如果传感器最大分辨率大于或等于 1080p,则最大流式传输尺寸必须至少为 1080p。如果应用程序配置的流尺寸更大,该流可能不会应用散景效果。

ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES

支持的非 DISABLED 的 ACAMERA_CONTROL_EXTENDED_SCENE_MODE 的缩放比率范围。

另请参阅: ACAMERA_CONTROL_EXTENDED_SCENE_MODE

类型:float[2*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

设置扩展场景模式时,相机设备可能相比未设置扩展场景模式 (DISABLED) 时具有有限的缩放比率范围。此标签列出了所有支持的非 DISABLED 扩展场景模式的缩放比率范围,其顺序与 android.control.availableExtended 中的顺序相同。

范围 [1.0, 1.0] 表示不支持任何缩放(光学或数字)。

ACAMERA_CONTROL_AVAILABLE_MODES

此相机设备支持的 ACAMERA_CONTROL_MODE 的控制模式列表。

另请参阅: ACAMERA_CONTROL_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此列表包含可以为相机设备设置的控制模式。LEGACY 模式设备将始终支持 AUTO 模式。LIMITED 和 FULL 设备将始终支持 OFFAUTO 模式。

ACAMERA_CONTROL_AVAILABLE_SCENE_MODES

此相机设备支持的 ACAMERA_CONTROL_SCENE_MODE 的场景模式列表。

另请参阅: ACAMERA_CONTROL_SCENE_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此列表包含可以为相机设备设置的场景模式。此处只能包含已针对相机设备完全实现的场景模式。不同设备上的实现不应期望一致。

如果相机设备不支持任何场景模式,此项将设置为 DISABLED。否则不会列出 DISABLED

如果支持人脸检测(即 ACAMERA_STATISTICS_INFO_MAX_FACE_COUNT > 0),则始终列出 FACE_PRIORITY

另请参阅: ACAMERA_STATISTICS_INFO_MAX_FACE_COUNT

ACAMERA_CONTROL_AVAILABLE_SETTINGS_OVERRIDES

相机设备支持的可用设置覆盖列表,可用于加快某些控制速度。

类型:int32[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

当 CaptureRequest 中的所有控制不需要同时在输出上生效时,相机设备可能会更快地应用某些请求键以改善延迟。此列表包含此类支持的设置覆盖。每个设置覆盖对应一组 CaptureRequest 键,这些键在应用时可以加速。

可以通过 CaptureRequest::CONTROL_SETTINGS_OVERRIDE 传递支持的设置覆盖,并且对应于覆盖的 CaptureRequest 键将尽快应用,不受逐帧同步限制。有关每个覆盖对应的 CaptureRequest 键,请参阅 ACAMERA_CONTROL_SETTINGS_OVERRIDE

OFF 始终包含在此列表中。

另请参阅: ACAMERA_CONTROL_SETTINGS_OVERRIDE

ACAMERA_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES

此相机设备支持的 ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE 的视频稳定模式列表。

另请参阅: ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

始终列出 OFF

ACAMERA_CONTROL_AWB_AVAILABLE_MODES

此相机设备支持的 ACAMERA_CONTROL_AWB_MODE 的自动白平衡模式列表。

另请参阅: ACAMERA_CONTROL_AWB_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

并非所有自动白平衡模式都可能由给定的相机设备支持。此条目列出了此相机设备的 ACAMERA_CONTROL_AWB_MODE 的有效模式。

所有相机设备都将支持 ON 模式。

支持 MANUAL_POST_PROCESSING 功能的相机设备将始终支持 OFF 模式,该模式通过使用 ACAMERA_COLOR_CORRECTION_TRANSFORMACAMERA_COLOR_CORRECTION_GAINSACAMERA_COLOR_CORRECTION_MODE 必须设置为 TRANSFORM_MATRIX)来启用应用程序对白平衡的控制。这包括所有 FULL 模式相机设备。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_MODE 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM 另请参阅: ACAMERA_CONTROL_AWB_MODE

ACAMERA_CONTROL_AWB_LOCK

自动白平衡 (AWB) 当前是否锁定在其最新计算的值。

类型:byte (acamera_metadata_enum_android_control_awb_lock_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

设置为 true (ON) 时,AWB 算法锁定在其最新参数,并且在锁定设置为 false (OFF) 之前不会更改颜色平衡设置。

由于相机设备具有正在处理的请求流水线,因此锁定的设置不一定与从相机设备接收到的最新捕获结果中的设置相对应,因为即使在发送结果之前,也可能发生了额外的捕获和 AWB 更新。如果应用程序在自动控制和手动控制之间切换,并希望消除切换过程中的任何闪烁,建议采用以下步骤

  1. 从自动 AWB 模式开始
  2. 锁定 AWB
  3. 等待输出第一个包含 AWB 锁定状态的结果
  4. 将该结果中的 AWB 设置复制到请求中,并将请求设置为手动 AWB
  5. 提交捕获请求,然后按需运行手动 AWB。

请注意,AWB 锁定仅在 ACAMERA_CONTROL_AWB_MODE 处于 AUTO 模式时有意义;在其他模式下,AWB 已固定到特定设置。

某些 LEGACY 设备可能不支持 ON;此时该值被覆盖为 OFF

另请参阅: ACAMERA_CONTROL_AWB_MODE

ACAMERA_CONTROL_AWB_LOCK_AVAILABLE

相机设备是否支持 ACAMERA_CONTROL_AWB_LOCK

另请参阅: ACAMERA_CONTROL_AWB_LOCK

类型:byte (acamera_metadata_enum_android_control_awb_lock_available_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

支持 MANUAL_POST_PROCESSING 功能或 BURST_CAPTURE 功能的设备将始终列出 true。这包括 FULL 设备。

ACAMERA_CONTROL_AWB_MODE

自动白平衡 (AWB) 当前是否设置颜色转换字段,以及其目标照明是什么。

类型:byte (acamera_metadata_enum_android_control_awb_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此控制仅在 ACAMERA_CONTROL_MODEAUTO 时有效。

设置为 AUTO 模式时,相机设备的自动白平衡例程将启用,覆盖应用程序选择的 ACAMERA_COLOR_CORRECTION_TRANSFORMACAMERA_COLOR_CORRECTION_GAINSACAMERA_COLOR_CORRECTION_MODE。请注意,当 ACAMERA_CONTROL_AE_MODEOFF 时,AWB 的行为取决于设备。建议在将 AE 模式设置为 OFF 之前,也将 AWB 模式设置为 OFF 或使用 ACAMERA_CONTROL_AWB_LOCK 锁定 AWB。

设置为 OFF 模式时,相机设备的自动白平衡例程将被禁用。应用程序通过 ACAMERA_COLOR_CORRECTION_TRANSFORMACAMERA_COLOR_CORRECTION_GAINSACAMERA_COLOR_CORRECTION_MODE 手动控制白平衡。

设置为任何其他模式时,相机设备的自动白平衡例程将被禁用。相机设备使用每个特定的照明目标进行白平衡调整。应用程序对 ACAMERA_COLOR_CORRECTION_TRANSFORMACAMERA_COLOR_CORRECTION_GAINSACAMERA_COLOR_CORRECTION_MODE 的值将被忽略。

另请参阅: ACAMERA_COLOR_CORRECTION_GAINS 另请参阅: ACAMERA_COLOR_CORRECTION_MODE 另请参阅: ACAMERA_COLOR_CORRECTION_TRANSFORM 另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AWB_LOCK 另请参阅: ACAMERA_CONTROL_MODE

ACAMERA_CONTROL_AWB_REGIONS

用于自动白平衡照明估计的测光区域列表。

类型:int32[5*area_count]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

如果 android.control.maxRegionsAwb 为 0,则不可用。否则始终存在。

设备支持的最大区域数量由 android.control.maxRegionsAwb 的值确定。

对于不支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系始终遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的坐标系,其中 (0,0) 是活动像素阵列的左上角像素,(ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.height - 1) 是活动像素阵列的右下角像素。

对于支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系取决于所设置的模式。当畸变校正模式为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是预校正活动阵列的左上角像素,(ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.height - 1) 是预校正活动像素阵列的右下角像素。当畸变校正模式不为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是活动阵列的左上角像素,(ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.width - 1, ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE.height - 1) 是活动像素阵列的右下角像素。

权重必须在 0 到 1000 之间,表示区域内每个像素的权重。这意味着具有相同权重的较大测光区域将在测光结果中产生更大影响。测光区域可以部分重叠,相机设备将叠加区域中的权重相加。

权重是相对于其他白平衡测光区域的权重而言的,因此如果只使用一个区域,所有非零权重将具有相同的效果。权重为 0 的区域将被忽略。

如果所有区域的权重都为 0,则相机设备无需使用特定的测光区域。

如果测光区域超出捕获结果元数据中返回的使用的 ACAMERA_SCALER_CROP_REGION,相机设备将忽略作物区域外的部分,并在结果元数据中仅输出交集矩形作为测光区域。如果区域完全超出作物区域,它将被忽略且不会在结果元数据中报告。

设置 AWB 测光区域时,应用程序必须考虑预览流和 ACAMERA_SCALER_CROP_REGION 之间的宽高比差异造成的额外作物。例如,如果 ACAMERA_SCALER_CROP_REGION 是宽高比为 4:3 的完整活动阵列大小,而预览流是 16:9,则 AWB 区域的边界将是 [0, y_crop] 和 [active_width, active_height - 2 * y_crop],而不是 [0, 0] 和 [active_width, active_height],其中 y_crop 是由于宽高比不匹配造成的额外作物。

从 API level 30 开始,activeArraySize 或 preCorrectionActiveArraySize 的坐标系用于表示 post-zoomRatio 视野,而不是 pre-zoom 视野。这意味着在不同的 ACAMERA_CONTROL_ZOOM_RATIO 下,相同的 awbRegions 值代表场景的不同部分。awbRegions 坐标是相对于表示缩放视野的 activeArray/preCorrectionActiveArray 的。如果 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0(默认值),则在不同的 ACAMERA_SCALER_CROP_REGION 下,相同的 awbRegions 仍代表场景的相同部分,就像它们之前一样。有关详细信息,请参阅 ACAMERA_CONTROL_ZOOM_RATIO。使用 activeArraySize 还是 preCorrectionActiveArraySize 仍然取决于畸变校正模式。

对于具有 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的相机设备,或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,必须使用 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION / ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 作为请求的坐标系。

数据表示为 int[5 * area_count]。每五个元素表示一个测光区域 (xmin, ymin, xmax, ymax, weight)。矩形定义为包含 xmin 和 ymin,但不包含 xmax 和 ymax。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_DISTORTION_CORRECTION_MODE 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_CONTROL_AWB_STATE

自动白平衡 (AWB) 算法的当前状态。

类型:byte (acamera_metadata_enum_android_control_awb_state_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

切换或启用 AWB 模式(ACAMERA_CONTROL_AWB_MODE)始终将 AWB 状态重置为 INACTIVE。同样,切换 ACAMERA_CONTROL_MODEACAMERA_CONTROL_SCENE_MODE(如果 ACAMERA_CONTROL_MODE == USE_SCENE_MODE)将所有算法状态重置为 INACTIVE

如果状态转换表允许,相机设备可以在两个结果之间进行多次状态转换。因此,结果中可能永远不会看到 INACTIVE

结果中的状态是此图像(与此图像同步)的状态:如果 AWB 状态变为 CONVERGED,则与此结果关联的图像数据应可供使用。

以下是不同 AWB 模式的状态转换表。

ACAMERA_CONTROL_AWB_MODE != AWB_MODE_AUTO

状态 转换原因 新状态 备注
INACTIVE INACTIVE 相机设备自动白平衡算法已禁用

ACAMERA_CONTROL_AWB_MODEAWB_MODE_AUTO

状态 转换原因 新状态 备注
INACTIVE 相机设备启动 AWB 扫描 SEARCHING 值正在改变
INACTIVE ACAMERA_CONTROL_AWB_LOCKON LOCKED 值已锁定
SEARCHING 相机设备完成 AWB 扫描 CONVERGED 值良好,未改变
SEARCHING ACAMERA_CONTROL_AWB_LOCKON LOCKED 值已锁定
CONVERGED 相机设备启动 AWB 扫描 SEARCHING 值正在改变
CONVERGED ACAMERA_CONTROL_AWB_LOCKON LOCKED 值已锁定
LOCKED ACAMERA_CONTROL_AWB_LOCKOFF SEARCHING 解锁后值不佳

对于上述表格,如果状态转换表允许,相机设备可能会跳过报告在没有应用程序干预(即模式切换、触发、锁定)的情况下发生的任何状态更改。以这种方式可以跳过的任何状态都称为瞬态。

例如,对于此 AWB 模式(AWB_MODE_AUTO),除了上述表格中列出的状态转换之外,相机设备在两个结果之间跳过一个或多个瞬态也是合法的。请参阅下表示例

状态 转换原因 新状态 备注
INACTIVE 相机设备完成 AWB 扫描 CONVERGED 值已良好,相机设备跳过了瞬态。
LOCKED ACAMERA_CONTROL_AWB_LOCKOFF CONVERGED 解锁后值良好,相机设备跳过了瞬态。
另请参阅: ACAMERA_CONTROL_AWB_LOCK 另请参阅: ACAMERA_CONTROL_AWB_MODE 另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_CONTROL_SCENE_MODE

ACAMERA_CONTROL_CAPTURE_INTENT

关于此捕获目的的信息,告知相机设备 3A(自动曝光、自动对焦、自动白平衡)例程,以帮助相机设备确定最优的 3A 策略。

类型:byte (acamera_metadata_enum_android_control_capture_intent_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此控制(MANUAL 除外)仅在 ACAMERA_CONTROL_MODE != OFF 且任何 3A 例程处于活动状态时有效。

所有设备都支持所有意图,但以下情况除外:

  • 如果 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 PRIVATE_REPROCESSINGYUV_REPROCESSING,则支持 ZERO_SHUTTER_LAG
  • 如果 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 MANUAL_SENSOR,则支持 MANUAL
  • 如果 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 MOTION_TRACKING,则支持 MOTION_TRACKING

另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

ACAMERA_CONTROL_EFFECT_MODE

要应用的特殊颜色效果。

类型:byte (acamera_metadata_enum_android_control_effect_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

设置此模式时,将对相机设备生成的图像应用颜色效果。这些颜色效果的解释和实现由相机设备的实现者决定,不应期望在所有设备上一致(或存在)。

ACAMERA_CONTROL_ENABLE_ZSL

允许相机设备为 ACAMERA_CONTROL_CAPTURE_INTENT == STILL_CAPTURE 的请求启用零快门延迟模式。

另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT

类型:byte (acamera_metadata_enum_android_control_enable_zsl_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

如果 enableZsl 为 true,相机设备可能为 STILL_CAPTURE 捕获意图的请求启用零快门延迟模式。相机设备可能使用过去捕获的图像为零快门延迟请求生成输出图像。结果元数据(包括 ACAMERA_SENSOR_TIMESTAMP)反映了用于生成输出图像的源帧。因此,输出图像的内容和结果元数据可能与之前的常规请求相比是无序的。enableZsl 不影响其他捕获意图的请求。

例如,当请求按以下顺序提交时: 请求 A:enableZsl 为 ON,ACAMERA_CONTROL_CAPTURE_INTENT 为 PREVIEW 请求 B:enableZsl 为 ON,ACAMERA_CONTROL_CAPTURE_INTENT 为 STILL_CAPTURE

请求 B 的输出图像的内容可能是在请求 A 的输出图像之前捕获的,并且请求 B 的结果元数据可能比请求 A 的结果元数据旧。

请注意,当 enableZsl 为 true 时,不能保证为 STILL_CAPTURE 捕获意图的请求获得过去捕获的输出图像。

对于目标 SDK 版本 O 及更高版本的应用程序,TEMPLATE_STILL_CAPTURE 模板中的 enableZsl 值可能为 true。如果存在,其他模板中的值始终为 false

对于目标 SDK 版本低于 O 的应用程序,如果存在,所有捕获模板中的 enableZsl 值始终为 false

对于应用程序操作的 ZSL,请使用 CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG 模板。

另请参阅: ACAMERA_CONTROL_CAPTURE_INTENT 另请参阅: ACAMERA_SENSOR_TIMESTAMP

ACAMERA_CONTROL_END
ACAMERA_CONTROL_EXTENDED_SCENE_MODE

对于特定的捕获请求,是否启用了扩展场景模式。

类型:byte (acamera_metadata_enum_android_control_extended_scene_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

使用散景模式时,相机设备可能会模糊场景中未对焦的部分,为人物或物体创建散景(或浅景深)效果。

设置为 BOKEH_STILL_CAPTURE 模式且捕获意图为 STILL_CAPTURE 时,由于高质量散景效果需要额外的处理,停顿时间可能比捕获意图不为 STILL_CAPTURE 时更长。

设置为 BOKEH_STILL_CAPTURE 模式且捕获意图为 PREVIEW 时,

  • 如果相机设备具有 BURST_CAPTURE 功能,则仍必须满足 BURST_CAPTURE 的帧率要求。
  • 所有不大于 BOKEH_STILL_CAPTURE 模式最大流式传输尺寸(通过 ACAMERA_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES 查询)的流都将应用预览散景效果。

设置为 BOKEH_CONTINUOUS 模式时,配置的流尺寸不应超过此模式的最大流式传输尺寸,以应用散景效果。对于大于最大流式传输尺寸的流,散景效果可能不可用。

在不同的扩展场景模式之间切换可能涉及相机流水线的重新配置,导致长时间延迟。应用程序应通过 ACameraManager_getCameraCharacteristics 查询可用会话键,并对照此键进行检查。

对于逻辑多摄像头,散景可以通过来自具有不同视野的子摄像头的立体视觉实现。因此,启用散景模式时,相机设备可能会覆盖 ACAMERA_SCALER_CROP_REGIONACAMERA_CONTROL_ZOOM_RATIO,并且视野可能小于散景模式关闭时的视野。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_SCALER_CROP_REGION

ACAMERA_CONTROL_LOW_LIGHT_BOOST_INFO_LUMINANCE_RANGE

低光增强的运行亮度范围,单位为勒克斯 (lx)。

类型:float[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_CONTROL_LOW_LIGHT_BOOST_STATE

低光增强 AE 模式的当前状态。

类型:byte (acamera_metadata_enum_android_control_low_light_boost_state_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

通过将 AE 模式设置为 'ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY' 启用低光增强后,当光照水平超过阈值时,它可以动态应用低光增强。

此状态指示低光增强何时处于 'ACTIVE' 状态并已应用。同样,它可以通过返回 'INACTIVE' 来指示何时未应用。

默认值将始终为 'INACTIVE'。

ACAMERA_CONTROL_MAX_REGIONS

自动曝光 (AE)、自动白平衡 (AWB) 和自动对焦 (AF) 可用于测光的最大区域数量列表;这对应于 ACAMERA_CONTROL_AE_REGIONSACAMERA_CONTROL_AWB_REGIONSACAMERA_CONTROL_AF_REGIONS 中的最大元素数量。

另请参阅: ACAMERA_CONTROL_AE_REGIONS 另请参阅: ACAMERA_CONTROL_AF_REGIONS 另请参阅: ACAMERA_CONTROL_AWB_REGIONS

类型:int32[3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_CONTROL_MODE

3A(自动曝光、自动白平衡、自动对焦)控制例程的总体模式。

类型:byte (acamera_metadata_enum_android_control_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

这是顶层的 3A 控制开关。设置为 OFF 时,相机设备的所有 3A 控制都被禁用。应用程序必须自行设置捕获参数的字段。

设置为 AUTO 时,ACAMERA_CONTROL_* 中的各个算法控制生效,例如 ACAMERA_CONTROL_AF_MODE

设置为 USE_SCENE_MODEUSE_EXTENDED_SCENE_MODE 时,ACAMERA_CONTROL_* 中的各个控制大部分被禁用,相机设备根据自己的意愿实现某个场景模式或扩展场景模式设置(例如 ACTIONSUNSETPARTYBOKEH)。相机设备场景模式的 3A 设置由捕获结果提供。

设置为 OFF_KEEP_STATE 时,类似于 OFF 模式,唯一区别是相机设备后台 3A 统计信息更新将不使用此帧,就像从未捕获过此帧一样。此模式可用于应用程序不希望 3A 手动控制捕获影响后续自动 3A 捕获结果的场景。

另请参阅: ACAMERA_CONTROL_AF_MODE

ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST

捕获 RAW 传感器数据后,对输出图像应用的额外感光度增强量。

类型:int32

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

某些相机设备在捕获传感器 RAW 图像后支持在相机处理流水线中进行额外的数字感光度增强。此类增强将应用于 YUV/JPEG 格式的输出图像,但对 RAW 输出格式(如 RAW_SENSORRAW10RAW12RAW_OPAQUE)无效。

对于不支持任何 RAW 格式输出的设备,此键将为 null。对于支持 RAW 格式输出的设备,此键将始终存在,并且如果设备不支持 RAW 后感光度增强,则此键中将列出 100

如果相机设备无法应用请求的确切增强量,它将把增强量降低到最接近的支持值。使用的最终增强值将在输出捕获结果中提供。

对于支持 RAW 后感光度增强的设备,此类设备的 YUV/JPEG 输出图像的总感光度为 ACAMERA_SENSOR_SENSITIVITY * ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST / 100。RAW 格式图像的感光度始终为 ACAMERA_SENSOR_SENSITIVITY

此控制仅在 ACAMERA_CONTROL_AE_MODEACAMERA_CONTROL_MODE 设置为 OFF 时有效;否则自动曝光算法将覆盖此值。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE

此相机设备支持的 ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST 的增强范围。

另请参阅: ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

支持 RAW 后感光度增强的设备将公布 ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST 键以控制 RAW 后感光度增强。

对于不支持任何 RAW 格式输出的设备,此键将为 null。对于支持 RAW 格式输出的设备,此键将始终存在,并且如果设备不支持 RAW 后感光度增强,它将在此键中列出 (100, 100)

另请参阅: ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST

ACAMERA_CONTROL_SCENE_MODE

控制当前激活的场景模式。

类型:byte (acamera_metadata_enum_android_control_scene_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

场景模式是针对特定条件和捕获设置优化的自定义相机模式。

这是 ACAMERA_CONTROL_MODE == USE_SCENE_MODE 时激活的模式。除了 FACE_PRIORITY 外,这些模式在使用时会禁用 ACAMERA_CONTROL_AE_MODEACAMERA_CONTROL_AWB_MODEACAMERA_CONTROL_AF_MODE

这些场景模式的解释和实现由相机设备的实现者决定。它们在所有设备上的行为不会一致,任何给定的设备可能只实现这些模式的子集。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AF_MODE 另请参阅: ACAMERA_CONTROL_AWB_MODE 另请参阅: ACAMERA_CONTROL_MODE

ACAMERA_CONTROL_SETTINGS_OVERRIDE

所需的 CaptureRequest 设置覆盖,通过该覆盖可以更早地应用某些键,从而更快地生效。

类型:int32 (acamera_metadata_enum_android_control_settings_override_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

CaptureRequest 中有一些键可以比其他键更早应用,当 CaptureRequest 中的控制不需要同时生效时。一个例子是缩放。缩放可以在相机流水线的后期阶段应用。相机设备收到 CaptureRequest 后,可以立即将请求的缩放值应用于流水线中已经存在的较早请求,从而缩短缩放延迟。

此键在捕获结果中的值反映了此捕获的控制是否被新的请求“覆盖”。这意味着如果一个捕获请求开启了设置覆盖,则较早请求的捕获结果将包含 ZOOM 的键值。另一方面,如果一个捕获请求开启了设置覆盖,但所有较新的请求都关闭了它,则捕获结果中的键值将为 OFF,因为此捕获未被新的捕获覆盖。在下面的两个示例中,捕获结果列说明了不同场景下的 settingsOverride 值。

假设设置覆盖可以将缩放速度提高 1 帧,以下示例说明了捕获会话开始时的加速效果

Camera session created
Request 1 (zoom=1.0x, override=ZOOM) ->
Request 2 (zoom=1.2x, override=ZOOM) ->
Request 3 (zoom=1.4x, override=ZOOM) ->  Result 1 (zoom=1.2x, override=ZOOM)
Request 4 (zoom=1.6x, override=ZOOM) ->  Result 2 (zoom=1.4x, override=ZOOM)
Request 5 (zoom=1.8x, override=ZOOM) ->  Result 3 (zoom=1.6x, override=ZOOM)
                                     ->  Result 4 (zoom=1.8x, override=ZOOM)
                                     ->  Result 5 (zoom=1.8x, override=OFF)

应用程序可以开启设置覆盖并正常使用缩放。该示例显示较后的缩放值(1.2x、1.4x、1.6x 和 1.8x)覆盖了较早请求(#1、#2、#3 和 #4)的缩放值(1.0x、1.2x、1.4x 和 1.8x)。

应用程序必须确保设置覆盖不会干扰需要 CaptureRequest 中所有控制在请求的输出目标上同时应用的用例。例如,如果应用程序使用 CameraCaptureSession::capture 进行静止捕获,并且重复请求立即使用覆盖设置了不同的缩放值,则正在进行的静止捕获的缩放值可能会被意外覆盖。

因此,强烈建议应用在进行静态/连拍捕获时关闭 settingsOverride,并且仅当存在重复的取景器请求且没有正在进行的静态/连拍捕获时再将其重新开启。

以下示例演示了设置 override 的过渡过程

Request 1 (zoom=1.0x, override=OFF)
Request 2 (zoom=1.2x, override=OFF)
Request 3 (zoom=1.4x, override=ZOOM)  -> Result 1 (zoom=1.0x, override=OFF)
Request 4 (zoom=1.6x, override=ZOOM)  -> Result 2 (zoom=1.4x, override=ZOOM)
Request 5 (zoom=1.8x, override=OFF)   -> Result 3 (zoom=1.6x, override=ZOOM)
                                      -> Result 4 (zoom=1.6x, override=OFF)
                                      -> Result 5 (zoom=1.8x, override=OFF)

此示例表明:

  • 应用通过将控件设置为 ZOOM 来“渐入”设置 override。在示例中,请求 #3 启用缩放设置 override。由于相机设备可以将应用缩放的速度加快 1 帧,请求 #2 的输出具有 1.4 倍缩放,这是请求 #3 中指定的值。
  • 应用通过将控件设置为 OFF 来“渐出”设置 override。在示例中,请求 #5 将 override 更改为 OFF。由于请求 #4 的缩放在结果 #3 中生效,结果 #4 的缩放保持不变,直到新值在结果 #5 中生效。

ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE

视频防抖是否处于活动状态。

类型:byte (acamera_metadata_enum_android_control_video_stabilization_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

视频防抖会自动对相机图像进行扭曲,以稳定连续帧之间的运动。

如果启用,视频防抖可以修改 ACAMERA_SCALER_CROP_REGION 以保持视频流稳定。

在不同的视频防抖模式之间切换可能需要几帧才能初始化,相机设备会在捕获结果元数据中报告当前模式。例如,当请求“ON”模式时,前几帧捕获结果中的视频防抖模式可能仍为“OFF”,初始化完成后才会变为“ON”。

此外,对于支持防抖的设备,并非所有录制尺寸或帧率都支持防抖。可以保证,如果录制分辨率小于等于 1920 x 1080(宽度小于等于 1920,高度小于等于 1080),且录制帧率小于等于 30fps,则针对 MediaRecorder 或 MediaCodec 的输出会进行防抖。在其他尺寸下,如果录制输出未进行防抖,或者没有可进行防抖的输出 Surface 类型,CaptureResult 的 ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE 字段将返回 OFF。

强烈建议应用在创建捕获会话之前,使用所需的视频防抖模式调用 ACameraDevice_createCaptureSessionWithSessionParameters。在许多设备上,视频防抖模式是一个会话参数。在会话创建时指定此参数有助于避免因默认值与第一个 CaptureRequest 之间的差异引起的重新配置延迟。

如果相机设备同时支持此模式和 OIS (ACAMERA_LENS_OPTICAL_STABILIZATION_MODE),同时开启这两种模式可能会产生不希望出现的交互,因此建议不要同时启用两者。

如果视频防抖设置为“PREVIEW_STABILIZATION”,则会覆盖 ACAMERA_LENS_OPTICAL_STABILIZATION_MODE。相机子系统可能会根据需要选择在软件防抖之外开启基于硬件的图像防抖。此键可能是可用会话键的一部分,客户端可以通过 ACameraManager_getCameraCharacteristics 查询。如果是这样,在捕获会话生命周期内更改此键可能会导致延迟/故障。

另请参阅: ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE 另请参阅: ACAMERA_LENS_OPTICAL_STABILIZATION_MODE 另请参阅: ACAMERA_SCALER_CROP_REGION

ACAMERA_CONTROL_ZOOM_RATIO

所需的缩放比例

类型:float

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

应用现在可以选择使用此标签指定所需的缩放级别,而不是使用 ACAMERA_SCALER_CROP_REGION 进行缩放。

通过使用此控件,应用获得了一种更简单的缩放控制方式,它可以是光学和数字缩放的组合。例如,多摄像头系统可能包含多个具有不同焦距的镜头,用户可以通过切换镜头来实现光学变焦。在以下场景中使用 zoomRatio 有好处:

  • 从广角镜头向远摄镜头放大:与 ACAMERA_SCALER_CROP_REGION 的整数值相比,浮点比例提供了更好的精度。
  • 从广角镜头向超广角镜头缩小:zoomRatio 支持缩小,而 ACAMERA_SCALER_CROP_REGION 不支持。

为了说明这一点,以下是对于一个有效阵列尺寸为 (2000,1500) 的假想相机设备,几种不同缩放比例、裁剪区域和输出流的场景。

  • 相机配置
    • 有效阵列尺寸:2000x1500 (3 MP, 4:3 宽高比)
    • 输出流 #1:640x480 (VGA, 4:3 宽高比)
    • 输出流 #2:1280x720 (720p, 16:9 宽高比)
  • 案例 #1:4:3 裁剪区域,2.0 倍缩放比例
    • 缩放后的视场:原始视场的 1/4
    • 裁剪区域:Rect(0, 0, 2000, 1500) // (left, top, right, bottom) (缩放后)
    • 640x480 流源区域:(0, 0, 2000, 1500) (等于裁剪区域)
    • 1280x720 流源区域:(0, 187, 2000, 1312) (信箱模式,上下有黑边)
  • 案例 #2:16:9 裁剪区域,2.0 倍缩放。
    • 缩放后的视场:原始视场的 1/4
    • 裁剪区域:Rect(0, 187, 2000, 1312)
    • 640x480 流源区域:(250, 187, 1750, 1312) (柱状模式,左右有黑边)
    • 1280x720 流源区域:(0, 187, 2000, 1312) (等于裁剪区域)
  • 案例 #3:1:1 裁剪区域,0.5 倍缩小至超广角镜头。
    • 缩放后的视场:原始视场的 4 倍(从广角镜头切换到超广角镜头)
    • 裁剪区域:Rect(250, 0, 1750, 1500)
    • 640x480 流源区域:(250, 187, 1750, 1312) (信箱模式)
    • 1280x720 流源区域:(250, 328, 1750, 1172) (信箱模式)

从上面的图示可以看出,使用 zoomRatio 时,cropRegion 的坐标系现在变为缩放后的有效视场,并由矩形 (0, 0, activeArrayWith, activeArrayHeight) 表示。AE/AWB/AF 区域和人脸也适用相同的坐标系。此坐标系更改不适用于 RAW 捕获及其相关元数据,例如 intrinsicCalibration 和 lensShadingMap。

使用与上述相同的假想示例,并假设输出流 #1 (640x480) 是取景器流,应用可以通过以下两种方式之一实现 2.0 倍缩放:

  • zoomRatio = 2.0, scaler.cropRegion = (0, 0, 2000, 1500)
  • zoomRatio = 1.0 (默认), scaler.cropRegion = (500, 375, 1500, 1125)

如果应用打算将 aeRegions 设置为取景器视场的左上角四分之一,则在将 zoomRatio 设置为 2.0 时,ACAMERA_CONTROL_AE_REGIONS 应设置为 (0, 0, 1000, 750)。或者,应用可以在 zoomRatio 为 1.0 时将 aeRegions 设置为等效区域 (500, 375, 1000, 750)。如果应用未明确设置 ACAMERA_CONTROL_ZOOM_RATIO,则其值默认为 1.0。

使用 zoomRatio 控制缩放的一个限制是,ACAMERA_SCALER_CROP_REGION 只能用于传感器的有效阵列的信箱或柱状裁剪,不能用于除了 1.0 之外的 ACAMERA_CONTROL_ZOOM_RATIO 的任何 FREEFORM 裁剪。如果 ACAMERA_CONTROL_ZOOM_RATIO 不为 1.0,并且 ACAMERA_SCALER_CROP_REGION 被设置为 windowboxing,则相机框架会将 ACAMERA_SCALER_CROP_REGION 覆盖为有效阵列。

在捕获请求中,如果应用将 ACAMERA_CONTROL_ZOOM_RATIO 设置为 != 1.0 的值,则捕获结果中的 ACAMERA_CONTROL_ZOOM_RATIO 标签反映相机设备实现的有效缩放比例,而 ACAMERA_SCALER_CROP_REGION 会针对与缩放无关的其他裁剪进行调整。否则,如果应用将 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0,或者根本没有设置,则结果元数据中的 ACAMERA_CONTROL_ZOOM_RATIO 标签也将为 1.0。

当应用请求逻辑多摄像头的物理流时,物理相机结果元数据中的 ACAMERA_CONTROL_ZOOM_RATIO 将为 1.0,而 ACAMERA_SCALER_CROP_REGION 标签将反映物理相机设备所做的缩放和裁剪量。

另请参阅: ACAMERA_CONTROL_AE_REGIONS 另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_SCALER_CROP_REGION

ACAMERA_CONTROL_ZOOM_RATIO_RANGE

此相机设备支持的最小和最大缩放比例。

类型:float[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果相机设备支持从 1 倍缩放缩小,则 minZoom 将小于 1.0,将 ACAMERA_CONTROL_ZOOM_RATIO 设置为小于 1.0 的值会增加相机的视场。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO

ACAMERA_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS

此列表列出了深度输出格式的每种格式/尺寸组合的最小帧持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这应对应于仅当该流处于活动状态时(所有处理(通常在 android.*.mode 中)设置为 OFF 或 FAST)的帧持续时间。

当在请求中使用多个流时,最小帧持续时间将是 max(单个流最小持续时间)。

流(特定格式、尺寸)的最小帧持续时间相同,无论该流是输入还是输出。

有关计算最大帧率的更多详细信息,请参阅 ACAMERA_SENSOR_FRAME_DURATIONACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 另请参阅: ACAMERA_SENSOR_FRAME_DURATION

ACAMERA_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了在提交 CaptureRequest 并将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,深度输出格式的每种格式/尺寸组合的最小帧持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时适用的配置。

有关计算最大帧率的更多详细信息,请参阅 ACAMERA_SENSOR_FRAME_DURATIONACAMERA_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION

另请参阅: ACAMERA_DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS 另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS

此列表列出了深度流的每种输出格式/尺寸组合的最大停止持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

停止持续时间是指对于包含非零停止流的重复请求,会在正常的最小帧持续时间上额外增加的时间。

这与用于深度流的 ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 功能类似。

所有深度输出流格式都可能具有非零的停止持续时间。

另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

ACAMERA_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了对于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequests,深度流的每种输出格式/尺寸组合的最大停止持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时适用的配置。

另请参阅: ACAMERA_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS

此相机设备支持的可用深度数据空间流配置(即格式、宽度、高度、输出/输入流)。

类型:int32[n*4] (acamera_metadata_enum_android_depth_available_depth_stream_configurations_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这些是用于 dataSpace HAL_DATASPACE_DEPTH 的输出流配置。配置以 (format, width, height, input?) 元组的形式列出。

只有至少支持 HAL_PIXEL_FORMAT_Y16 密集深度图深度输出的设备才能包含此条目。

支持 HAL_PIXEL_FORMAT_BLOB 稀疏深度点云的设备必须在此列表中以 (HAL_PIXEL_FORMAT_BLOB, android.depth.maxDepthSamples, 1, OUTPUT) 的形式报告该格式的单个条目,此外还要报告 HAL_PIXEL_FORMAT_Y16 的条目。

ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION

当提交 CaptureRequest 并将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,此相机设备支持的可用深度数据空间流配置(即格式、宽度、高度、输出/输入流)。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int32[n*4] (acamera_metadata_enum_android_depth_available_depth_stream_configurations_maximum_resolution_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时适用的配置。

另请参阅: ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS

此列表列出了动态深度输出流的每种格式/尺寸组合的最小帧持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这应对应于仅当该流处于活动状态时(所有处理(通常在 android.*.mode 中)设置为 OFF 或 FAST)的帧持续时间。

当在请求中使用多个流时,最小帧持续时间将是 max(单个流最小持续时间)。

流(特定格式、尺寸)的最小帧持续时间相同,无论该流是输入还是输出。

ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了对于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequests,动态深度输出流的每种格式/尺寸组合的最小帧持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时适用的配置。

另请参阅: ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS

此列表列出了动态深度流的每种输出格式/尺寸组合的最大停止持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

停止持续时间是指对于包含非零停止流的重复请求,会在正常的最小帧持续时间上额外增加的时间。

所有动态深度输出流都可能具有非零的停止持续时间。

ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了对于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequests,动态深度流的每种输出格式/尺寸组合的最大停止持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时适用的配置。

另请参阅: ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS

此相机设备支持的可用动态深度数据空间流配置(即格式、宽度、高度、输出/输入流)。

类型:int32[n*4] (acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这些是用于 dataSpace DYNAMIC_DEPTH 的输出流配置。配置以 (format, width, height, input?) 元组的形式列出。

只有同时支持 HAL_PIXEL_FORMAT_Y16 密集深度图和 HAL_PIXEL_FORMAT_BLOB(具有相同尺寸或相同宽高比)深度输出的设备,才能具有动态深度数据空间流配置。ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE 也需要设置为 FALSE。

另请参阅: ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE

ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION

当提交 CaptureRequest 并将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,此相机设备支持的可用动态深度数据空间流配置(即格式、宽度、高度、输出/输入流)。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int32[n*4] (acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_maximum_resolution_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时适用的配置。

另请参阅: ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS

推荐的深度流配置,适用于常见的客户端用例。

类型:int32[n*5]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS 的可选子集,其中包含以 (width, height, format, output/input stream, usecase bit field) 形式列出的类似元组。相机设备可以针对特定用例推荐功耗和性能高效的深度流配置。有关检索建议的更多信息,请参阅 CameraCharacteristics::getRecommendedStreamConfigurationMap

有关数据表示形式,请参阅 ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS

另请参阅: ACAMERA_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS 另请参阅: ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS

ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE

指示捕获请求是否可以同时针对 DEPTH16 / DEPTH_POINT_CLOUD 输出和正常的颜色输出(如 YUV_420_888、JPEG 或 RAW)。

类型:byte (acamera_metadata_enum_android_depth_depth_is_exclusive_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果为 TRUE,则不支持在单个捕获请求中同时包含深度和颜色输出。应用必须交错颜色和深度请求。如果为 FALSE,单个请求可以同时针对这两种输出类型。

通常,这种限制存在于需要发出特定模式或波长的光来测量深度值的相机设备上,这会导致在深度测量期间颜色图像损坏。

ACAMERA_DEPTH_END
ACAMERA_DISTORTION_CORRECTION_AVAILABLE_MODES

此相机设备支持的 ACAMERA_DISTORTION_CORRECTION_MODE 的失真校正模式列表。

另请参阅: ACAMERA_DISTORTION_CORRECTION_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

并非所有设备都必须支持此 API;此类设备将始终仅列出“OFF”。所有支持此 API 的设备都将列出 FAST 和 HIGH_QUALITY。

ACAMERA_DISTORTION_CORRECTION_END
ACAMERA_DISTORTION_CORRECTION_MODE

镜头失真校正模块的操作模式。

类型:byte (acamera_metadata_enum_android_distortion_correction_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

镜头失真校正模块尝试通过修正相机设备光学系统中的径向、切向或其他几何像差来改善图像质量。如果可用,ACAMERA_LENS_DISTORTION 字段记录了镜头的失真参数。

OFF 表示不进行失真校正。

FAST/HIGH_QUALITY 都表示相机设备将应用决定的失真校正。HIGH_QUALITY 模式表示相机设备将使用最高质量的校正算法,即使会降低捕获速率。FAST 表示相机设备在应用校正时不会降低捕获速率。如果任何校正都会降低捕获速率,FAST 可能与 OFF 相同。每个输出流都将应用类似程度的增强。

校正仅适用于 YUV、Y8、JPEG 或 DEPTH16 等已处理的输出;不适用于任何 RAW 输出。

对于支持此控件的设备,此控件将默认为 ON。禁用失真校正的应用需要特别注意测光区域、裁剪区域和人脸矩形的坐标系。当失真校正为 OFF 时,元数据坐标遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 的坐标系。当失真校正不为 OFF 时,元数据坐标遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的坐标系。相机设备会映射这些元数据字段,使其与相机设备生成的校正后的图像匹配,无论是捕获请求还是结果。但是,这种映射不是很精确,因为校正后矩形通常不会映射到矩形。只执行了活动阵列和预校正活动阵列坐标之间的线性缩放。需要精确校正元数据的应用需要撤销这种线性缩放,并应用更完整的校正,考虑应用自身的要求。

受此失真校正影响的元数据完整列表如下:

  • ACAMERA_CONTROL_AF_REGIONS
  • ACAMERA_CONTROL_AE_REGIONS
  • ACAMERA_CONTROL_AWB_REGIONS
  • ACAMERA_SCALER_CROP_REGION
  • android.statistics.faces

另请参阅: ACAMERA_CONTROL_AE_REGIONS 另请参阅: ACAMERA_CONTROL_AF_REGIONS 另请参阅: ACAMERA_CONTROL_AWB_REGIONS 另请参阅: ACAMERA_LENS_DISTORTION 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

ACAMERA_EDGE_AVAILABLE_EDGE_MODES

此相机设备支持的 ACAMERA_EDGE_MODE 的边缘增强模式列表。

另请参阅: ACAMERA_EDGE_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

FULL 模式相机设备必须始终支持 OFF;支持 YUV_REPROCESSING 或 PRIVATE_REPROCESSING 的相机设备将列出 ZERO_SHUTTER_LAG;所有设备都将列出 FAST。

ACAMERA_EDGE_END
ACAMERA_EDGE_MODE

边缘增强的操作模式。

类型:byte (acamera_metadata_enum_android_edge_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

边缘增强可改善捕获图像的清晰度和细节。OFF 表示相机设备不会应用任何增强。

FAST/HIGH_QUALITY 都表示相机设备将应用决定的增强。HIGH_QUALITY 模式表示相机设备将使用最高质量的增强算法,即使会降低捕获速率。FAST 表示相机设备在应用边缘增强时不会降低捕获速率。如果任何边缘增强都会降低捕获速率,FAST 可能与 OFF 相同。每个输出流都将应用类似程度的增强。

ZERO_SHUTTER_LAG 旨在供应用使用,这些应用在预览期间维护一个连续的高分辨率图像循环缓冲区,并在用户触发时从该缓冲区重新处理图像以生成最终捕获。在此模式下,相机设备对低分辨率流(低于最大录制分辨率)应用边缘增强以最大化预览质量,但不对此高分辨率流应用边缘增强,因为如果需要,以后会重新处理这些流。

对于 YUV_REPROCESSING,这些 FAST/HIGH_QUALITY 模式都表示相机设备将分别应用 FAST/HIGH_QUALITY YUV 域边缘增强。如果设置了 android.reprocess.effectiveExposureFactor,相机设备可能会调整其内部边缘增强参数以获得最佳图像质量。

ACAMERA_FLASH_END
ACAMERA_FLASH_INFO_AVAILABLE

此相机设备是否具有闪光灯单元。

类型:byte (acamera_metadata_enum_android_flash_info_available_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果没有闪光灯可用,将为 false

如果没有闪光灯单元,则任何闪光灯控件都无效。

ACAMERA_FLASH_INFO_END
ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL

通过 CameraManager::turnOnTorchWithStrengthLevel 设置的默认手电筒亮度级别。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果闪光灯单元可用,此值将大于或等于 1 且小于或等于 ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL

将手电筒亮度设置为高于默认级别(即 ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL)可能会使设备更容易达到热节流条件并减速,或比正常情况更快地耗尽电池。为了最大程度地减少此类问题,建议在用户明确请求更亮的级别之前,从该默认亮度启动手电筒。请注意,对于没有闪光灯单元的设备,此键的值将为 null。默认级别应始终 > 0。

另请参阅: ACAMERA_FLASH_INFO_STRENGTH_DEFAULT_LEVEL 另请参阅: ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL

ACAMERA_FLASH_INFO_STRENGTH_MAXIMUM_LEVEL

最大手电筒亮度级别。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果此值大于 1,则设备支持通过 CameraManager::turnOnTorchWithStrengthLevel 控制手电筒亮度级别。如果此值等于 1,则不支持手电筒亮度控制。对于没有闪光灯单元的设备,此键的值将为 null。

保证最大值在设备闪光灯寿命方面可以无限期安全使用,但对于许多用例来说可能过于刺眼。请使用默认手电筒亮度值以避免手电筒过亮的问题。

ACAMERA_FLASH_MODE

相机设备闪光灯控制所需的模式。

类型:byte (acamera_metadata_enum_android_flash_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此控件仅当闪光灯单元可用时 (ACAMERA_FLASH_INFO_AVAILABLE == true) 才有效。

使用此控件时,ACAMERA_CONTROL_AE_MODE 必须设置为 ON 或 OFF。否则,相机设备的自动曝光相关闪光灯控制 (ON_AUTO_FLASH, ON_ALWAYS_FLASH, 或 ON_AUTO_FLASH_REDEYE) 将覆盖此控件。

设置为 OFF 时,相机设备不会在此捕获中触发闪光灯。

设置为 SINGLE 时,相机设备将触发闪光灯,无论相机设备的自动曝光例程结果如何。在静态捕获情况下使用时,此控件应与自动曝光 (AE) 预捕获测光序列 (ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER) 一起使用,否则图像可能会曝光不正确。

设置为 TORCH 时,闪光灯将持续开启。此模式可用于预览、自动对焦辅助、静态捕获或视频录制等用例。

闪光灯状态将由捕获结果元数据中的 ACAMERA_FLASH_STATE 报告。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER 另请参阅: ACAMERA_FLASH_INFO_AVAILABLE 另请参阅: ACAMERA_FLASH_STATE

ACAMERA_FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL

SINGLE 模式下手动闪光灯控制的默认闪光灯亮度级别。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果闪光灯单元可用,此值将大于或等于 1 且小于或等于 ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL。请注意,对于不支持手动闪光灯强度控制功能的设备,此级别将始终等于 1。

另请参阅: ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL

ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL

SINGLE 模式下手动闪光灯控制的最大闪光灯亮度级别。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

在相机捕获模式下,当 ACAMERA_FLASH_MODE 设置为 SINGLE 时的最大闪光灯亮度级别。如果支持手动闪光灯强度控制功能,此值将 > 1,否则此值将等于 1。请注意,此级别仅代表支持的级别数量(控制的粒度)。与此级别没有实际的物理功率单位绑定。

另请参阅: ACAMERA_FLASH_MODE

ACAMERA_FLASH_STATE

闪光灯单元的当前状态。

类型:byte (acamera_metadata_enum_android_flash_state_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

当相机设备没有闪光灯单元时(即 ACAMERA_FLASH_INFO_AVAILABLE == false),此状态将始终为 UNAVAILABLE。其他状态表示当前的闪光灯状态。

在某些条件下,这将在 LEGACY 设备上可用。

  • 无闪光灯的相机始终返回 UNAVAILABLE。
  • 使用 ACAMERA_CONTROL_AE_MODE == ON_ALWAYS_FLASH 将始终返回 FIRED。
  • 使用 ACAMERA_FLASH_MODE == TORCH 将始终返回 FIRED。

在所有其他条件下,状态在 LEGACY 设备上将不可用(即为 null)。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_FLASH_INFO_AVAILABLE 另请参阅: ACAMERA_FLASH_MODE

ACAMERA_FLASH_STRENGTH_LEVEL

手动闪光灯控制激活时使用的闪光灯强度级别。

类型:int32

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

在捕获模式下使用闪光灯强度级别,即当应用使用 SINGLETORCH 模式控制闪光灯时。

使用 ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVELACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL 检查设备是否支持闪光灯强度控制。如果 ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVELACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL 的值大于 1,则设备支持手动闪光灯强度控制。

如果 ACAMERA_FLASH_MODE == TORCH,则值必须 >= 1 且 <= ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL。如果应用未设置此键且 ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL > 1,则闪光灯将以 HAL 在 ACAMERA_FLASH_TORCH_STRENGTH_DEFAULT_LEVEL 中设置的默认级别触发。如果 ACAMERA_FLASH_MODE == SINGLE,则值必须 >= 1 且 <= ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL。如果应用未设置此键且 ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL > 1,则闪光灯将以 HAL 在 ACAMERA_FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL 中设置的默认级别触发。如果 ACAMERA_CONTROL_AE_MODE 设置为 ON_AUTO_FLASHON_ALWAYS_FLASHON_AUTO_FLASH_REDEYEON_EXTERNAL_FLASH 中的任何值,则 strengthLevel 将被忽略。

当 AE 模式为 ON 且闪光灯模式为 TORCH 或 SINGLE 时,应用应确保 AE 模式、闪光灯模式和闪光灯强度级别在预捕获触发请求和最终捕获请求之间保持一致。在预捕获序列中设置的闪光灯强度级别用作相机设备的参考。实际强度可能会较低,自动曝光例程会确保预捕获和最终捕获之间在指定强度级别下进行适当的传感器曝光时间和感光度转换。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_FLASH_MODE 另请参阅: ACAMERA_FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL 另请参阅: ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL 另请参阅: ACAMERA_FLASH_TORCH_STRENGTH_DEFAULT_LEVEL 另请参阅: ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL

ACAMERA_FLASH_TORCH_STRENGTH_DEFAULT_LEVEL

TORCH 模式下手动闪光灯控制的默认闪光灯亮度级别

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果闪光灯单元可用,此值将大于或等于 1 且小于或等于 ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL。请注意,对于不支持手动闪光灯强度控制功能的设备,此级别将始终等于 1。

另请参阅: ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL

ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL

TORCH 模式下手动闪光灯控制的最大闪光灯亮度级别

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

在相机捕获模式下,当 ACAMERA_FLASH_MODE 设置为 TORCH 时的最大闪光灯亮度级别。如果支持手动闪光灯强度控制功能,此值将 > 1,否则此值将等于 1。

请注意,此级别仅代表支持的级别数量(控制的粒度)。与此级别没有实际的物理功率单位绑定。ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVELACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL 之间没有关系,即 ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL : ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL 的比率不能保证是实际亮度的比率。

另请参阅: ACAMERA_FLASH_MODE 另请参阅: ACAMERA_FLASH_SINGLE_STRENGTH_MAX_LEVEL 另请参阅: ACAMERA_FLASH_TORCH_STRENGTH_MAX_LEVEL

ACAMERA_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS

此列表列出了 HEIC 输出格式的每种格式/尺寸组合的最小帧持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这应对应于仅当该流处于活动状态时(所有处理(通常在 android.*.mode 中)设置为 OFF 或 FAST)的帧持续时间。

当在请求中使用多个流时,最小帧持续时间将是 max(单个流最小持续时间)。

有关计算最大帧率的更多详细信息,请参阅 ACAMERA_SENSOR_FRAME_DURATIONACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 另请参阅: ACAMERA_SENSOR_FRAME_DURATION

ACAMERA_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了在提交 CaptureRequest 并将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,HEIC 输出格式的每种格式/尺寸组合的最小帧持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

有关详细信息,请参阅 ACAMERA_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS

另请参阅: ACAMERA_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS

ACAMERA_HEIC_AVAILABLE_HEIC_STALL_DURATIONS

此列表列出了 HEIC 流的每种输出格式/尺寸组合的最大停止持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

停止持续时间是指对于包含非零停止流的重复请求,会在正常的最小帧持续时间上额外增加的时间。

这与用于 HEIC 流的 ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 功能类似。

所有 HEIC 输出流格式都可能具有非零的停止持续时间。

另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

ACAMERA_HEIC_AVAILABLE_HEIC_STALL_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了对于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequests,HEIC 流的每种输出格式/尺寸组合的最大停止持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

有关详细信息,请参阅 ACAMERA_HEIC_AVAILABLE_HEIC_STALL_DURATIONS

另请参阅: ACAMERA_HEIC_AVAILABLE_HEIC_STALL_DURATIONS

ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS

此相机设备支持的可用 HEIC (ISO/IEC 23008-12) 流配置(即格式、宽度、高度、输出/输入流)。

类型:int32[n*4] (acamera_metadata_enum_android_heic_available_heic_stream_configurations_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

配置以 (format, width, height, input?) 元组的形式列出。

如果相机设备支持 HEIC 图像格式,它将支持与 JPEG 图像格式相关的流组合集相同的一组流组合,这取决于设备的硬件级别和功能。

与 JPEG 相关的所有静态、控制和动态元数据标签都适用于 HEIC 格式。不支持同时配置 JPEG 和 HEIC 流。

所有配置元组 (format, width, height, input?) 都将包含格式 AIMAGE_FORMAT_HEIC 并仅作为 OUTPUT。

ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION

此相机设备支持的可用 HEIC (ISO/IEC 23008-12) 流配置(即格式、宽度、高度、输出/输入流)。

类型:int32[n*4] (acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

有关详细信息,请参阅 ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS

所有配置元组 (format, width, height, input?) 都将包含格式 AIMAGE_FORMAT_HEIC 并仅作为 OUTPUT。

另请参阅: ACAMERA_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS

ACAMERA_HEIC_END
ACAMERA_HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES

此相机设备支持的 ACAMERA_HOT_PIXEL_MODE 的热像素校正模式列表。

另请参阅: ACAMERA_HOT_PIXEL_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

FULL 模式相机设备将始终支持 FAST。

ACAMERA_HOT_PIXEL_END
ACAMERA_HOT_PIXEL_MODE

热像素校正的操作模式。

类型:byte (acamera_metadata_enum_android_hot_pixel_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

热像素校正会插值或以其他方式移除不能准确测量入射光的像素(即固定在任意值或过度敏感的像素)。

ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS

类型:int64[2*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

HAL 必须为每个支持的设备状态按位组合填充 (hardware::camera::provider::V2_5::DeviceState, sensorOrientation) 对的数组。

ACAMERA_INFO_END
ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL

通常对相机设备的整体功能集进行分类。

类型:byte (acamera_metadata_enum_android_info_supported_hardware_level_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

支持的硬件级别是相机设备功能的高级描述,将多种功能汇总在一个字段中。每个级别都在前一个级别基础上增加了额外功能,并且始终是前一个级别的严格超集。排序为 LEGACY < LIMITED < FULL < LEVEL_3

LEVEL_3 开始,级别枚举的数值也保证是递增的。要检查给定设备是否至少达到某个硬件级别,可以使用以下代码片段:

// Returns true if the device supports the required hardware level, or better.
boolean isHardwareLevelSupported(CameraCharacteristics c, int requiredLevel) {
    final int[] sortedHwLevels = {
        CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY,
        CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL,
        CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED,
        CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL,
        CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_3
    };
    int deviceLevel = c.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
    if (requiredLevel == deviceLevel) {
        return true;
    }

    for (int sortedlevel : sortedHwLevels) {
        if (sortedlevel == requiredLevel) {
            return true;
        } else if (sortedlevel == deviceLevel) {
            return false;
        }
    }
    return false; // Should never reach here
}

概括地说,级别如下:

  • LEGACY 设备运行在旧版 Android 设备的向后兼容模式下,功能非常有限。
  • LIMITED 设备代表基线功能集,也可能包含 FULL 的额外功能子集。
  • FULL 设备还支持对传感器、闪光灯、镜头和后期处理设置进行逐帧手动控制,并能以高速率捕获图像。
  • LEVEL_3 设备还支持 YUV 重新处理和 RAW 图像捕获,以及额外的输出流配置。
  • EXTERNAL 设备类似于 LIMITED 设备,但有些例外,例如某些传感器或镜头信息未报告,或者帧率不太稳定。

有关支持功能的完整描述,请参阅各个级别枚举。如果需要,ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 条目描述了设备功能更精细的级别。此外,许多控件的可用设置或范围在 ACameraManager_getCameraCharacteristics 中的各个条目中定义。

某些功能不属于任何特定的硬件级别或功能,必须单独查询。这些功能包括:

  • 校准时间戳 (ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE == REALTIME)
  • 精确镜头控制 (ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION == CALIBRATED)
  • 人脸检测 (ACAMERA_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES)
  • 光学或电子图像防抖 (ACAMERA_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION, ACAMERA_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES)

另请参阅: ACAMERA_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES 另请参阅: ACAMERA_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION 另请参阅: ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION 另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 另请参阅: ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE 另请参阅: ACAMERA_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES

ACAMERA_INFO_VERSION

关于相机设备的制造商版本信息的短字符串,例如 ISP 硬件、传感器等。

类型:byte

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这可用于 jpeg EXIF 中的 TAG_IMAGE_DESCRIPTION。如果设备上没有版本信息,此键可能缺失。

ACAMERA_JPEGR_AVAILABLE_JPEG_R_MIN_FRAME_DURATIONS

此列表列出了 Jpeg/R 输出格式的每种格式/尺寸组合的最小帧持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这应对应于仅当该流处于活动状态时(所有处理(通常在 android.*.mode 中)设置为 OFF 或 FAST)的帧持续时间。

当在请求中使用多个流时,最小帧持续时间将是 max(单个流最小持续时间)。

有关计算最大帧率的更多详细信息,请参阅 ACAMERA_SENSOR_FRAME_DURATIONACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 另请参阅: ACAMERA_SENSOR_FRAME_DURATION

ACAMERA_JPEGR_AVAILABLE_JPEG_R_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了对于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequests,Jpeg/R 输出格式的每种格式/尺寸组合的最小帧持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

有关详细信息,请参阅 ACAMERA_JPEGR_AVAILABLE_JPEG_R_MIN_FRAME_DURATIONS

另请参阅: ACAMERA_JPEGR_AVAILABLE_JPEG_R_MIN_FRAME_DURATIONS

ACAMERA_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS

此列表列出了 Jpeg/R 流的每种输出格式/尺寸组合的最大停止持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

停止持续时间是指对于包含非零停止流的重复请求,会在正常的最小帧持续时间上额外增加的时间。

这与用于 Jpeg/R 流的 ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 功能类似。

所有 Jpeg/R 输出流格式都可能具有非零的停止持续时间。

另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

ACAMERA_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS_MAXIMUM_RESOLUTION

此列表列出了对于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequests,Jpeg/R 流的每种输出格式/尺寸组合的最大停止持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

有关详细信息,请参阅 ACAMERA_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS

另请参阅: ACAMERA_JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS

ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS

此相机设备支持的可用 Jpeg/R 流配置(即格式、宽度、高度、输出/输入流)。

类型:int32[n*4] (acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

配置以 (format, width, height, input?) 元组的形式列出。

如果相机设备支持 Jpeg/R,它将支持与 P010 相同的流组合集,这取决于设备的硬件级别和功能。设备支持的与 Jpeg/R(或 P010)相关的流组合由设备的硬件级别和功能决定。

与 JPEG 相关的所有静态、控制和动态元数据标签都适用于 Jpeg/R 格式。不支持同时配置 JPEG 和 Jpeg/R 流。

所有配置元组 (format, width, height, input?) 都将包含格式 AIMAGE_FORMAT_JPEGR 并仅作为 OUTPUT。

ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION

此相机设备支持的可用 Jpeg/R 流配置(即格式、宽度、高度、输出/输入流)。

类型:int32[n*4] (acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_maximum_resolution_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

有关详细信息,请参阅 ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS

所有配置元组 (format, width, height, input?) 都将包含格式 AIMAGE_FORMAT_JPEG_R 并仅作为 OUTPUT。

另请参阅: ACAMERA_JPEGR_AVAILABLE_JPEG_R_STREAM_CONFIGURATIONS

ACAMERA_JPEGR_END
ACAMERA_JPEG_AVAILABLE_THUMBNAIL_SIZES

此相机设备支持的 ACAMERA_JPEG_THUMBNAIL_SIZE 的 JPEG 缩略图尺寸列表。

另请参阅: ACAMERA_JPEG_THUMBNAIL_SIZE

类型:int32[2*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此列表将包含至少一个非零分辨率,以及用于指示不生成缩略图的 (0,0)

对于此尺寸列表,将满足以下条件:

  • 尺寸将按像素面积(宽度 x 高度)递增排序。如果多个分辨率具有相同的面积,它们将按宽度递增排序。
  • 最大缩略图尺寸的宽高比将与 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中最大 JPEG 输出尺寸的宽高比相同。最大尺寸定义为给定尺寸列表中具有最大像素面积的尺寸。
  • ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中的每个输出 JPEG 尺寸在 availableThumbnailSizes 中将至少有一个具有相同宽高比的对应尺寸,反之亦然。
  • 所有非 (0, 0) 尺寸的宽度和高度都将非零。

此列表也用作 HEIC 图像格式捕获支持的缩略图尺寸。

另请参阅: ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS

ACAMERA_JPEG_END
ACAMERA_JPEG_GPS_COORDINATES

要包含在输出 JPEG EXIF 中的 GPS 坐标。

类型:double[3]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此标签也用于 HEIC 图像捕获。

ACAMERA_JPEG_GPS_PROCESSING_METHOD

描述 GPS 算法的 32 个字符,要包含在 EXIF 中。

类型:byte

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此标签也用于 HEIC 图像捕获。

ACAMERA_JPEG_GPS_TIMESTAMP

进行 GPS 定位的时间,要包含在 EXIF 中。

类型:int64

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此标签也用于 HEIC 图像捕获。

ACAMERA_JPEG_ORIENTATION

JPEG 图像的方向。

类型:int32

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

为了竖直观看 JPEG 图片,相对于相机方向需要顺时针旋转的角度(以度为单位)。

相机设备可以将此值编码到 JPEG EXIF 头部,或者旋转图像数据以匹配此方向。当图像数据被旋转时,缩略图数据也会被旋转。此外,如果图像数据被旋转,Image::getWidthImage::getHeight 将不会更新以反映旋转后图像的高度和宽度。

请注意,此方向是相对于 ACAMERA_SENSOR_ORIENTATION 给出的相机传感器方向。

对于非 EXTERNAL 的相机传感器,要从 Android 传感器 API 给出的设备方向进行转换,可以使用以下示例代码:

private int getJpegOrientation(CameraCharacteristics c, int deviceOrientation) {
    if (deviceOrientation == android.view.OrientationEventListener.ORIENTATION_UNKNOWN) return 0;
    int sensorOrientation = c.get(CameraCharacteristics.SENSOR_ORIENTATION);

    // Round device orientation to a multiple of 90
    deviceOrientation = (deviceOrientation + 45) / 90 * 90;

    // Reverse device orientation for front-facing cameras
    boolean facingFront = c.get(CameraCharacteristics.LENS_FACING) == CameraCharacteristics.LENS_FACING_FRONT;
    if (facingFront) deviceOrientation = -deviceOrientation;

    // Calculate desired JPEG orientation relative to camera orientation to make
    // the image upright relative to the device orientation
    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;

    return jpegOrientation;
}

对于 EXTERNAL 相机,传感器方向将始终设置为 0,并且 facing 也将设置为 EXTERNAL。在这种情况下,上述代码不适用。

此标签也用于描述 HEIC 图像捕获的方向,在这种情况下,旋转通过 EXIF orientation flag 反映,而不是通过旋转图像数据本身。

另请参阅: ACAMERA_SENSOR_ORIENTATION

ACAMERA_JPEG_QUALITY

最终 JPEG 图像的压缩质量。

类型:byte

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

典型使用范围是 85-95。此标签也用于描述 HEIC 图像捕获的质量。

ACAMERA_JPEG_THUMBNAIL_QUALITY

JPEG 缩略图的压缩质量。

类型:byte

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此标签也用于描述 HEIC 图像捕获的质量。

ACAMERA_JPEG_THUMBNAIL_SIZE

嵌入式 JPEG 缩略图的分辨率。

类型:int32[2]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

当设置为 (0, 0) 值时,JPEG EXIF 将不包含缩略图,但捕获的 JPEG 仍然是有效图像。

为获得最佳效果,在请求 JPEG 图像时,所选的缩略图尺寸应与主 JPEG 输出具有相同的纵横比。

如果缩略图图像的纵横比与 JPEG 主图像的纵横比不同,相机设备将通过从主图像中裁剪来创建缩略图。例如,如果主图像的纵横比为 4:3,而缩略图图像的纵横比为 16:9,则主图像将垂直裁剪(信箱式)以生成缩略图图像。当纵横比不同时,缩略图图像的视野 (FOV) 总是小于主图像的视野。

当请求非零角度的 ACAMERA_JPEG_ORIENTATION 时,相机设备将通过以下任一方式处理缩略图旋转

  • 设置 EXIF 方向标志,并保持 jpeg 和缩略图图像数据未旋转。
  • 旋转 jpeg 和缩略图图像数据,但不设置 EXIF 方向标志。在这种情况下,LIMITED 或 FULL 硬件级别的设备将在捕获结果中报告旋转后的缩略图尺寸,因此如果请求 90 度或 270 度方向,宽度和高度将互换。LEGACY 设备将始终报告未旋转的缩略图尺寸。

该标记也用作 HEIC 图像格式捕获的缩略图尺寸,在这种情况下,缩略图旋转由 EXIF 方向标志 反映,而不是通过旋转缩略图数据本身来反映。

另请参阅: ACAMERA_JPEG_ORIENTATION

ACAMERA_LENS_APERTURE

所需的镜头光圈大小,表示为镜头焦距与有效光圈直径之比。

类型:float

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

仅在具有可变光圈镜头的相机设备上支持设置此值。

当支持此功能且 ACAMERA_CONTROL_AE_MODE 为 OFF 时,可以与 ACAMERA_SENSOR_EXPOSURE_TIME、ACAMERA_SENSOR_SENSITIVITY 和 ACAMERA_SENSOR_FRAME_DURATION 一起设置此值,以实现手动曝光控制。

请求的光圈值可能需要几帧才能达到请求的值;相机设备将在光圈变化时,在捕获结果元数据中报告当前(中间)光圈大小。当光圈仍在变化时,ACAMERA_LENS_STATE 将设置为 MOVING。

当支持此功能且 ACAMERA_CONTROL_AE_MODE 为 ON 模式之一时,相机设备自动曝光算法将覆盖此值,然后将覆盖后的值在相应的结果中提供给用户。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_LENS_STATE 另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME 另请参阅: ACAMERA_SENSOR_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_LENS_DISTORTION

用于校正此相机设备的径向和切向镜头畸变的校正系数。

替换了已弃用的 ACAMERA_LENS_RADIAL_DISTORTION 字段,该字段定义不一致。

另请参阅:ACAMERA_LENS_RADIAL_DISTORTION

类型:float[5]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata
  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

三个径向畸变系数 [kappa_1, kappa_2, kappa_3] 和两个切向畸变系数 [kappa_4, kappa_5],可用于使用映射方程校正镜头的几何畸变

 x_c = x_i * ( 1 + kappa_1 * r^2 + kappa_2 * r^4 + kappa_3 * r^6 ) +
       kappa_4 * (2 * x_i * y_i) + kappa_5 * ( r^2 + 2 * x_i^2 )
 y_c = y_i * ( 1 + kappa_1 * r^2 + kappa_2 * r^4 + kappa_3 * r^6 ) +
       kappa_5 * (2 * x_i * y_i) + kappa_4 * ( r^2 + 2 * y_i^2 )

此处,[x_c, y_c] 是输入图像中与校正图像坐标 [x_i, y_i] 处像素值对应的采样坐标

 correctedImage(x_i, y_i) = sample_at(x_c, y_c, inputImage)

像素坐标定义在与 ACAMERA_LENS_INTRINSIC_CALIBRATION 校准字段相关的坐标系中;请参阅该条目了解映射阶段的详细信息。 [x_i, y_i][x_c, y_c] 的 (0,0) 都位于镜头光学中心 [c_x, c_y],坐标范围取决于内参校准的焦距项。

最后,r 表示距光学中心的径向距离,r^2 = x_i^2 + y_i^2

使用的畸变模型是 Brown-Conrady 模型。

另请参阅: ACAMERA_LENS_INTRINSIC_CALIBRATION

ACAMERA_LENS_DISTORTION_MAXIMUM_RESOLUTION

用于校正此相机设备的径向和切向镜头畸变的校正系数,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequest。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:float[5]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_LENS_DISTORTION,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时。

另请参阅: ACAMERA_LENS_DISTORTION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_LENS_END
ACAMERA_LENS_FACING

相机相对于设备屏幕的朝向。

类型:byte (acamera_metadata_enum_android_lens_facing_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_LENS_FILTER_DENSITY

镜头中性密度滤镜的所需设置。

类型:float

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

大多数相机设备不支持此控制。

镜头滤镜通常用于降低传感器暴露的光量(以 EV 步长测量)。此处使用的 EV 步长是标准对数表示,为非负值,与到达传感器的光量成反比。例如,将其设置为 0 将不会减少入射光,设置为 2 则表示滤镜设置为减少两个档位(使到达传感器的光量为之前的 1/4)。

镜头滤镜密度可能需要几帧才能变为请求的值。当滤镜密度仍在变化时,ACAMERA_LENS_STATE 将设置为 MOVING。

另请参阅: ACAMERA_LENS_STATE

ACAMERA_LENS_FOCAL_LENGTH

所需的镜头焦距;用于光学变焦。

类型:float

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此设置控制相机设备镜头的物理焦距。更改焦距会改变相机设备的视野,通常用于光学变焦。

与 ACAMERA_LENS_FOCUS_DISTANCE 和 ACAMERA_LENS_APERTURE 一样,此设置不会立即应用,镜头可能需要几帧才能改变到请求的焦距。当焦距仍在变化时,ACAMERA_LENS_STATE 将设置为 MOVING。

大多数设备不支持通过此控制进行光学变焦。从 API 级别 30 开始,相机设备可以通过 ACAMERA_CONTROL_ZOOM_RATIO 控制结合光学变焦和数字变焦。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_LENS_APERTURE 另请参阅: ACAMERA_LENS_FOCUS_DISTANCE 另请参阅: ACAMERA_LENS_STATE

ACAMERA_LENS_FOCUS_DISTANCE

所需的最清晰焦平面距离,从镜头最前表面测量。

类型:float

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

对于定焦相机,此值应为零

ACAMERA_LENS_FOCUS_RANGE

清晰对焦(景深)的场景距离范围。

类型:float[2]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

如果不支持可变焦距,仍可报告固定景深范围

ACAMERA_LENS_INFO_AVAILABLE_APERTURES

此相机设备支持的 ACAMERA_LENS_APERTURE 的光圈大小值列表。

另请参阅: ACAMERA_LENS_APERTURE

类型:float[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果相机设备不支持可变镜头光圈,则此列表将仅包含一个值,即固定光圈大小。

如果相机设备支持可变光圈,则此列表中的光圈值将按升序排列。

ACAMERA_LENS_INFO_AVAILABLE_FILTER_DENSITIES

此相机设备支持的 ACAMERA_LENS_FILTER_DENSITY 的中性密度滤镜值列表。

另请参阅: ACAMERA_LENS_FILTER_DENSITY

类型:float[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果此相机设备不支持中性密度滤镜,则此列表将仅包含 0。否则,此列表将包含相机设备支持的所有滤镜密度,按升序排列。

ACAMERA_SCALER_AVAILABLE_FOCAL_LENGTHS

此相机设备支持的 ACAMERA_LENS_FOCAL_LENGTH 的焦距列表。

另请参阅: ACAMERA_LENS_FOCAL_LENGTH

类型:float[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果不支持光学变焦,此列表将仅包含一个对应于设备的固定焦距的值。否则,此列表将包含相机设备支持的所有焦距,按升序排列。

ACAMERA_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION

此相机设备支持的 ACAMERA_LENS_OPTICAL_STABILIZATION_MODE 的光学图像稳定 (OIS) 模式列表。

另请参阅: ACAMERA_LENS_OPTICAL_STABILIZATION_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果给定的相机设备不支持 OIS,则此列表将仅包含 OFF。

ACAMERA_LENS_INFO_END
ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION

镜头对焦距离校准质量。

类型:byte (acamera_metadata_enum_android_lens_info_focus_distance_calibration_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

镜头对焦距离校准质量决定了与对焦相关的元数据条目的可靠性,即 ACAMERA_LENS_FOCUS_DISTANCE、ACAMERA_LENS_FOCUS_RANGE、ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE 和 ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE。

APPROXIMATE 和 CALIBRATED 设备以屈光度(1/米)为单位报告对焦元数据,因此 0.0f 表示无限远对焦,而增加的正数表示越来越靠近相机设备。这些设备上的对焦距离控制也使用屈光度。

UNCALIBRATED 设备不使用可以直接与任何实际物理测量值相比的单位,但 0.0f 仍然表示最远对焦,而 ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE 表示设备能够实现的最短对焦距离。

另请参阅: ACAMERA_LENS_FOCUS_DISTANCE 另请参阅: ACAMERA_LENS_FOCUS_RANGE 另请参阅: ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE 另请参阅: ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE

ACAMERA_LENS_INFO_HYPERFOCAL_DISTANCE

此镜头的超焦距。

类型:float

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果镜头不是定焦,当 ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION 为 APPROXIMATE 或 CALIBRATED 时,相机设备将报告此字段。

另请参阅: ACAMERA_LENS_INFO_FOCUS_DISTANCE_CALIBRATION

ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE

镜头最前表面能够实现清晰对焦的最短距离。

类型:float

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果镜头是定焦,此值将为 0。

ACAMERA_LENS_INFO_SHADING_MAP_SIZE

镜头阴影图的维度。

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

该图应在 30-40 行和列的数量级,且必须小于 64x64。

ACAMERA_LENS_INTRINSIC_CALIBRATION

此相机设备的内参校准参数。

类型:float[5]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata
  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

描述从相机中心 3D 坐标到传感器像素坐标转换的五个校准参数

[f_x, f_y, c_x, c_y, s]

其中 f_xf_y 是水平和垂直焦距,[c_x, c_y] 是光轴的位置,s 是传感器平面未与镜头平面对齐的倾斜参数。

这些参数通常用于变换矩阵 K 中

K = [ f_x,   s, c_x,
       0, f_y, c_y,
       0    0,   1 ]

然后可以与相机姿态旋转 R 和平移 t(分别为 ACAMERA_LENS_POSE_ROTATION 和 ACAMERA_LENS_POSE_TRANSLATION)结合,计算从世界坐标到像素坐标的完整变换

P = [ K 0   * [ R -Rt
     0 1 ]      0 1 ]

(请注意,从相机坐标映射到世界坐标时,poseTranslation 的符号取反,并乘以旋转矩阵)。

其中 p_w 是世界坐标系中的点,p_s 是相机活动像素阵列坐标系中的点,映射包括按 z 进行齐次除法

 p_h = (x_h, y_h, z_h) = P p_w
p_s = p_h / z_h

因此 [x_s, y_s] 是世界点的像素坐标,z_s = 1w_s 是像素坐标中的视差(深度)测量值。

请注意,此变换的坐标系是 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 系统,其中 (0,0) 是 preCorrectionActiveArraySize 矩形的左上角。将姿态和内参校准变换应用于世界点后,需要应用 ACAMERA_LENS_DISTORTION 变换,并将结果调整到 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 坐标系(其中 (0, 0) 是 activeArraySize 矩形的左上角),以确定处理后(非 RAW)输出缓冲区的世界点的最终像素坐标。

对于相机设备,像素 (x,y) 的中心位于坐标 (x + 0.5, y + 0.5) 处。因此,在具有大小为 (10,10) 的预校正活动阵列的设备上,有效像素索引范围为 (0,0)-(9,9),一个完美构建的相机将在像素网格的精确中心具有光学中心,坐标为 (5.0, 5.0),这是像素 (5,5) 的左上角。

另请参阅: ACAMERA_LENS_DISTORTION 另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

ACAMERA_LENS_INTRINSIC_CALIBRATION_MAXIMUM_RESOLUTION

将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,此相机设备的内参校准参数。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:float[5]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_LENS_INTRINSIC_CALIBRATION,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时。

另请参阅: ACAMERA_LENS_INTRINSIC_CALIBRATION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_LENS_OPTICAL_STABILIZATION_MODE

设置相机设备在捕获图像时是否使用光学图像稳定 (OIS)。

类型:byte (acamera_metadata_enum_android_lens_optical_stabilization_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

OIS 用于补偿捕获过程中相机微小移动导致的运动模糊。与数字图像稳定 (ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE) 不同,OIS 利用机械元件稳定相机传感器,因此在相机抖动变得明显之前允许更长的曝光时间。

在不同的光学稳定模式之间切换可能需要几帧来初始化,相机设备将在捕获结果元数据中报告当前模式。例如,当请求“ON”模式时,前几个捕获结果中的光学稳定模式可能仍为“OFF”,初始化完成后将变为“ON”。

如果相机设备同时支持 OIS 和数字图像稳定 (ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE),同时开启这两种模式可能会产生不良交互,因此建议不要同时启用两者。

如果 ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE 设置为“PREVIEW_STABILIZATION”,则 ACAMERA_LENS_OPTICAL_STABILIZATION_MODE 将被覆盖。相机子系统可能会选择在基于软件的稳定之外开启基于硬件的图像稳定,如果它认为合适的话。此键在捕获结果中的值将反映选择了哪种 OIS 模式。

并非所有设备都支持 OIS;有关可用控件,请参阅 ACAMERA_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION。

另请参阅: ACAMERA_CONTROL_VIDEO_STABILIZATION_MODE 另请参阅: ACAMERA_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION 另请参阅: ACAMERA_LENS_OPTICAL_STABILIZATION_MODE

ACAMERA_LENS_POSE_REFERENCE

ACAMERA_LENS_POSE_TRANSLATION 的原点,以及 ACAMERA_LENS_POSE_TRANSLATION 和 ACAMERA_LENS_POSE_ROTATION 的精度。

另请参阅: ACAMERA_LENS_POSE_ROTATION 另请参阅: ACAMERA_LENS_POSE_TRANSLATION

类型:byte (acamera_metadata_enum_android_lens_pose_reference_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

不同的校准方法和使用案例可能会根据选择的坐标原点产生更好或更差的结果。

ACAMERA_LENS_POSE_ROTATION

相机相对于传感器坐标系的朝向。

类型:float[4]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata
  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

描述从 Android 传感器坐标系到相机对齐坐标系(其中 X 轴与图像传感器的长边对齐,Y 轴与图像传感器的短边对齐,Z 轴与传感器的光轴对齐)的四元数旋转的四个系数。

要将四元数系数 (x,y,z,w) 转换为旋转轴 (a_x, a_y, a_z) 和旋转量 theta,可以使用以下公式

 theta = 2 * acos(w)
a_x = x / sin(theta/2)
a_y = y / sin(theta/2)
a_z = z / sin(theta/2)

要创建一个应用此四元数定义的旋转的 3x3 旋转矩阵,可以使用以下矩阵

R = [ 1 - 2y^2 - 2z^2,       2xy - 2zw,       2xz + 2yw,
           2xy + 2zw, 1 - 2x^2 - 2z^2,       2yz - 2xw,
           2xz - 2yw,       2yz + 2xw, 1 - 2x^2 - 2y^2 ]

然后可以使用此矩阵将旋转应用于列向量点

p' = Rp

其中 p 在设备传感器坐标系中,p' 在相机朝向坐标系中。

如果 ACAMERA_LENS_POSE_REFERENCE 是 UNDEFINED,则相机设备无法准确表示四元数旋转,并将使用与其默认朝向匹配的默认值表示。

另请参阅: ACAMERA_LENS_POSE_REFERENCE

ACAMERA_LENS_POSE_TRANSLATION

相机光学中心的位置。

类型:float[3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata
  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

相机设备镜头光学中心的位置,表示为三维向量 (x,y,z)

在 Android P 之前,或当 ACAMERA_LENS_POSE_REFERENCE 为 PRIMARY_CAMERA 时,此位置是相对于与此相机朝向相同的最大相机设备的光学中心,在 Android 传感器坐标轴 中表示。请注意,仅轴定义与传感器坐标系共享,原点不共享。

如果此设备是具有给定朝向的最大或唯一的相机设备,则此位置将为 (0, 0, 0);相机设备的光学中心沿 +X 轴(从用户视角看是右侧)距离主传感器 3 厘米,则将报告 (0.03, 0, 0)。请注意,这意味着对于许多计算机视觉应用,需要将此位置取反,以将其转换为从相机到原点的平移向量。

要在两个朝向相同的相机之间转换像素坐标,首先必须校正源相机 ACAMERA_LENS_DISTORTION。然后需要应用源相机 ACAMERA_LENS_INTRINSIC_CALIBRATION,接着是源相机的 ACAMERA_LENS_POSE_ROTATION、源相机相对于目标相机的平移、目标相机的 ACAMERA_LENS_POSE_ROTATION,最后是目标相机 ACAMERA_LENS_INTRINSIC_CALIBRATION 的逆。这样可以在目标相机像素坐标中获得无径向畸变的坐标。

要将此与目标相机的真实图像进行比较,目标相机图像需要先校正径向畸变,然后才能进行比较或采样。

当 ACAMERA_LENS_POSE_REFERENCE 为 GYROSCOPE 时,此位置是相对于设备上主陀螺仪的中心。轴定义与 PRIMARY_CAMERA 相同。

当 ACAMERA_LENS_POSE_REFERENCE 为 UNDEFINED 时,此位置无法由相机设备准确表示,将表示为 (0, 0, 0)

当 ACAMERA_LENS_POSE_REFERENCE 为 AUTOMOTIVE 时,此位置是相对于汽车传感器坐标系的原点,该原点位于后轴中心。

另请参阅: ACAMERA_LENS_DISTORTION 另请参阅: ACAMERA_LENS_INTRINSIC_CALIBRATION 另请参阅: ACAMERA_LENS_POSE_REFERENCE 另请参阅: ACAMERA_LENS_POSE_ROTATION

ACAMERA_LENS_RADIAL_DISTORTION
ACAMERA_LENS_STATE

当前镜头状态。

类型:byte (acamera_metadata_enum_android_lens_state_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

对于镜头参数 ACAMERA_LENS_FOCAL_LENGTH、ACAMERA_LENS_FOCUS_DISTANCE、ACAMERA_LENS_FILTER_DENSITY 和 ACAMERA_LENS_APERTURE,当请求更改时,可能需要几帧才能达到请求的值。此状态指示镜头参数的当前状态。

当状态为 STATIONARY 时,镜头参数未发生变化。这可能是因为所有参数都是固定的,或者是因为镜头有足够的时间达到最近请求的值。如果相机设备的这些镜头参数都不可更改,如下所列

  • 定焦(ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE == 0),这意味着 ACAMERA_LENS_FOCUS_DISTANCE 参数将始终为 0。
  • 固定焦距(ACAMERA_LENS_INFO_AVAILABLE_FOCAL_LENGTHS 包含单个值),这意味着不支持光学变焦。
  • 无 ND 滤镜(ACAMERA_LENS_INFO_AVAILABLE_FILTER_DENSITIES 仅包含 0)。
  • 固定光圈(ACAMERA_LENS_INFO_AVAILABLE_APERTURES 包含单个值)。

则此状态将始终为 STATIONARY。

当状态为 MOVING 时,表示至少一个镜头参数正在发生变化。

另请参阅: ACAMERA_LENS_APERTURE 另请参阅: ACAMERA_LENS_FILTER_DENSITY 另请参阅: ACAMERA_LENS_FOCAL_LENGTH 另请参阅: ACAMERA_LENS_FOCUS_DISTANCE 另请参阅: ACAMERA_LENS_INFO_AVAILABLE_APERTURES 另请参阅: ACAMERA_LENS_INFO_AVAILABLE_FILTER_DENSITIES 另请参阅: ACAMERA_LENS_INFO_AVAILABLE_FOCAL_LENGTHS 另请参阅: ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE

ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID

包含底层活动物理相机 ID 的字符串。

类型:byte

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

支持逻辑相机的活动物理相机的 ID。所有与物理相机无关的相机流和元数据都将源自此物理相机。

对于由物理相机组成的逻辑相机,其中每个相机的镜头特性不同,相机设备可能会在应用更改 FOCAL_LENGTH 或 SCALER_CROP_REGION 时选择在物理相机之间切换。在镜头切换时,此结果元数据反映新的活动物理相机 ID。

如果相机设备通过 ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS 宣传此键,则此键可用。如果可用,则必须是支持此逻辑多相机的有效物理 ID 之一。如果此键对于逻辑多相机不可用,相机设备实现仍可能根据使用案例在不同的活动物理相机之间切换,但当前活动物理相机信息将无法提供给应用。

ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_SENSOR_CROP_REGION

将为此捕获读取的活动物理传感器的当前区域。

类型:int32[4]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

此捕获结果与非逻辑单相机传感器设备上的 ACAMERA_SCALER_CROP_REGION 匹配。对于响应 ACAMERA_CONTROL_ZOOM_RATIO 可以在多个物理设备之间切换的逻辑相机,此捕获结果的行为将不同于 ACAMERA_SCALER_CROP_REGION 和 ACAMERA_CONTROL_ZOOM_RATIO(其中两者组合反映了逻辑相机输出的有效变焦和裁剪)。相反,此捕获结果值将描述活动物理设备的变焦和裁剪。此捕获结果值会更改的一些示例包括不同物理镜头之间的切换、常规像素模式和最大分辨率像素模式之间的切换以及通过设备的数字或光学范围。此捕获结果在畸变校正方面类似于 ACAMERA_SCALER_CROP_REGION。当畸变校正模式为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是预校正活动阵列的左上角像素。当畸变校正模式不为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是活动阵列的左上角像素。

对于具有 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的相机设备或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备,必须使用当前活动物理设备的 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION / ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 作为将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的请求的坐标系。

数据表示为 int[4],映射到(左、上、宽、高)。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_LOGICAL_MULTI_CAMERA_END
ACAMERA_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS

包含底层物理相机 ID 的字符串。

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

对于逻辑相机,这是所有底层物理相机 ID 的串联。物理相机 ID 的 null 终止符必须保留,以便可以使用 '\0' 对整个字符串进行标记化,生成物理相机 ID 列表。

例如,如果逻辑相机的物理相机 ID 是“2”和“3”,则此标签的值将为 ['2', '\0', '3', '\0']。

物理相机 ID 的数量必须不少于 2。

ACAMERA_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE

物理相机之间帧时间戳同步的精度

类型:byte (acamera_metadata_enum_android_logical_multi_camera_sensor_sync_type_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

帧时间戳同步的精度决定了物理相机同时开始曝光的能力。如果 sensorSyncType 是 CALIBRATED,物理相机传感器通常以主从模式运行,其中一个传感器为另一个传感器生成时序信号,从而使其快门时间同步。对于 APPROXIMATE sensorSyncType,相机传感器通常以主主模式运行,两个传感器都使用自己的时序发生器,并且它们的曝光开始时间可能存在偏移。

在这两种情况下,为特定捕获请求生成的所有图像仍然带有相同的时间戳,因此可以用来查找匹配的帧号和 onCaptureStarted 回调。

此标签仅适用于逻辑相机设备支持来自不同物理相机的并发物理流的情况。

ACAMERA_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES

此相机设备支持的 ACAMERA_NOISE_REDUCTION_MODE 的降噪模式列表。

另请参阅: ACAMERA_NOISE_REDUCTION_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

Full-capability 相机设备将始终支持 OFF 和 FAST。

支持 YUV_REPROCESSING 或 PRIVATE_REPROCESSING 的相机设备将支持 ZERO_SHUTTER_LAG。

Legacy-capability 相机设备将仅支持 FAST 模式。

ACAMERA_NOISE_REDUCTION_END
ACAMERA_NOISE_REDUCTION_MODE

降噪算法的操作模式。

类型:byte (acamera_metadata_enum_android_noise_reduction_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

降噪算法通过去除捕获过程中添加的过多噪声(尤其是在黑暗条件下),试图提高图像质量。

OFF 表示相机设备不会应用任何降噪,无论是在 raw 域还是 YUV 域。

MINIMAL 表示仅启用传感器 raw 域基本降噪,以去除去马赛克或其他处理伪影。对于 YUV_REPROCESSING,MINIMAL 与 OFF 相同。此模式是可选的,并非所有设备都支持。应用在使用前应检查 ACAMERA_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES。

FAST/HIGH_QUALITY 都表示将应用相机设备确定的噪声过滤。HIGH_QUALITY 模式表示相机设备将使用最高质量的噪声过滤算法,即使会降低捕获速率。FAST 表示相机设备在应用噪声过滤时不会降低捕获速率。如果列出 MINIMAL,则 FAST 可能与 MINIMAL 相同,如果任何噪声过滤会降低捕获速率,则可能与 OFF 相同。每个输出流将应用相似程度的增强。

ZERO_SHUTTER_LAG 旨在供那些在预览期间维护高分辨率图像的连续循环缓冲区,并在用户触发时将该缓冲区中的图像重新处理为最终捕获的应用使用。在此模式下,相机设备对低分辨率流(低于最大录制分辨率)应用降噪以最大化预览质量,但不对高分辨率流应用降噪,因为这些流如果需要稍后会重新处理。

对于 YUV_REPROCESSING,这些 FAST/HIGH_QUALITY 模式都表示相机设备将分别应用 FAST/HIGH_QUALITY YUV 域降噪。如果设置了 android.reprocess.effectiveExposureFactor,相机设备可能会根据其调整降噪参数以获得最佳图像质量。

另请参阅: ACAMERA_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES

ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

此相机设备宣传完全支持的功能列表。

类型:byte[n] (acamera_metadata_enum_android_request_available_capabilities_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

功能是相机设备为了能够满足一个或多个使用案例而做出的契约。

列出某个功能保证了支持常见用途所需的所有功能集都将可用。

在特定的相机设备实现上,可能可以使用不受支持功能所提供的功能子集;为此,请查询 ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS、ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS、ACAMERA_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS 中的每一个。

以下功能保证在 ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL == FULL 设备上可用

  • MANUAL_SENSOR
  • MANUAL_POST_PROCESSING

其他功能可能在 FULL 或 LIMITED 设备上可用,但应用应查询此键以确定。

另请参阅: ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL 另请参阅: ACAMERA_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS 另请参阅: ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS 另请参阅: ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS

ACAMERA_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS

相机设备可用于 ACameraManager_getCameraCharacteristics 的所有键列表。

类型:int32[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此条目遵循与 ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS 相同的规则(除了适用于 CameraCharacteristics 而非 CaptureResult)。详情请见上文。

另请参阅: ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS

ACAMERA_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP

相机设备支持的所有可能的色彩空间配置文件列表。

类型:int64[n*3] (acamera_metadata_enum_android_request_available_color_space_profiles_map_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

色彩空间配置文件是色彩空间、图像格式和动态范围配置文件的组合。如果相机不支持 CameraCharacteristics::REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT 功能,动态范围配置文件将始终是 DynamicRangeProfiles::STANDARD。相机客户端可以使用 SessionConfiguration::setColorSpace 选择色彩空间。

ACAMERA_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP

所有可用 10 位动态范围配置文件及其捕获请求约束的映射。

类型:int64[n*3] (acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

支持 10 位输出功能 CameraCharacteristics::REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT 的设备必须列出其支持的动态范围配置文件。如果相机无法在单个捕获请求中支持所有可能的配置文件组合,则也必须在此处列出约束。

ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS

可为支持逻辑多相机的物理设备覆盖的可用请求键的子集。

类型:int32[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是 ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS 的子集,其中包含可以使用 Builder::setPhysicalCameraKey 覆盖的键列表。此类请求键的相应值可以通过调用 Builder::getPhysicalCameraKey 获取。包含单个物理设备请求的捕获请求必须通过 Set) 构建。

另请参阅: ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS

ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS

相机设备可用于 ACaptureRequest 的所有键列表。

类型:int32[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

尝试将未在此处列出的键设置到 CaptureRequest 中将导致请求无效并被相机设备拒绝。

此字段可用于以比功能更精细的粒度查询相机设备的功能集。这对于在 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 中的任何功能下未列出的可选键尤其重要。

另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES

ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS

相机设备可用于 ACameraCaptureSession_captureCallback_result 的所有键列表。

类型:int32[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

尝试从未在此处列出的 CaptureResult 中获取键将始终返回 null 值。从此处列出的 CaptureResult 中获取键通常不会返回 null 值。

除非启用以下键,否则它们可能返回 null

  • ACAMERA_STATISTICS_LENS_SHADING_MAP(当且仅当 ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE == ON 时非 null)

(即使这些有时为 null 的键可用,它们仍将在此处列出。)

此字段可用于以比功能更精细的粒度查询相机设备的功能集。这对于在 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 中的任何功能下未列出的可选键尤其重要。

另请参阅: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP 另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE

ACAMERA_REQUEST_AVAILABLE_SESSION_KEYS

相机设备可以作为捕获会话初始化的一部分传递的可用请求键的子集。

类型:int32[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是 ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS 的子集,其中包含一些难以按帧应用并在捕获会话生命周期内修改时可能导致意外延迟的键列表。典型的示例包括需要耗时的硬件重新配置或内部相机流水线更改的参数。出于性能原因,我们建议客户端将初始值作为 ACameraDevice_createCaptureSessionWithSessionParameters 的一部分传递。相机捕获会话启用后,也建议避免更改 ACameraDevice_createCaptureSessionWithSessionParameters 中设置的初始值。会话参数的控制仍然可以在捕获请求中执行,但客户端应该意识到并在应用过程中预期延迟。示例使用场景可能如下所示

  • 相机客户端首先通过 ACameraManager_getCameraCharacteristics 查询会话参数键列表。
  • 在触发捕获会话创建序列之前,必须使用与特定使用案例匹配的适当模板通过 ACameraDevice_createCaptureRequest 构建捕获请求。
  • 客户端应检查会话参数列表,查看其中列出的一些键是否与他们打算作为第一个捕获请求一部分修改的参数匹配。
  • 如果不存在此类匹配项,则捕获请求可以不加修改地传递给 ACameraDevice_createCaptureSessionWithSessionParameters
  • 如果存在匹配项,客户端应更新相应的值并将请求传递给 ACameraDevice_createCaptureSessionWithSessionParameters
  • 捕获会话初始化完成后,会话参数键列表可以继续作为发布或更新进一步请求的参考。如上所述,理想情况下应避免对会话参数进行进一步更改,但如果需要更新,客户端可能会在参数切换期间遇到延迟/故障。

另请参阅: ACAMERA_REQUEST_AVAILABLE_REQUEST_KEYS

ACAMERA_REQUEST_END
ACAMERA_REQUEST_MAX_NUM_OUTPUT_STREAMS

相机设备可以同时配置和使用的不同类型输出流的最大数量。

类型:int32[3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是一个包含 3 个元素的元组,分别包含 raw 传感器格式、处理后(非停顿)格式和处理后(停顿)格式的最大同时输出流数量。例如,假设 JPEG 通常是处理后且停顿的流,如果最大 raw 传感器格式输出流数量为 1,最大 YUV 流数量为 3,最大 JPEG 流数量为 2,则此元组应为 (1, 3, 2)

这列出了相机设备支持的输出流数量的上限。同时使用更多流可能需要更多的硬件和 CPU 资源,从而消耗更多电量。输出流的图像格式可以是 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 提供的任何支持的格式。ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中定义的格式可以分为以下 3 种流类型

  • 处理后(但停顿):stallDurations > 0 的任何非 RAW 格式。通常为 JPEG 格式
  • Raw 格式:RAW_SENSORRAW10RAW12
  • 处理后(非停顿):没有停顿持续时间的任何非 RAW 格式。通常为 YUV_420_888NV21YV12Y8

另请参阅: ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS

ACAMERA_REQUEST_PARTIAL_RESULT_COUNT

定义结果将由多少个子组件组成。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

为了应对流水线延迟,一旦可用,相机设备可能会将部分结果发送到应用层。

可选;默认为 1。值为 1 意味着不支持部分结果,相机设备只会产生最终的 TotalCaptureResult。

典型的使用案例可能是:请求自动对焦 (AF) 锁定后,新的 AF 状态可能在流水线处理到 50% 时可用。然后相机设备可以通过部分结果立即将此状态发送给应用,其余元数据通过后续部分结果发送。

ACAMERA_REQUEST_PIPELINE_DEPTH

指定帧从曝光到最终完成结果可供框架使用所经过的流水线阶段数量。

类型:byte

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

根据请求中使用的设置和配置的流,数据可能经过较少的处理,并且跳过一些流水线阶段。

有关更多详细信息,请参阅 ACAMERA_REQUEST_PIPELINE_MAX_DEPTH。

另请参阅: ACAMERA_REQUEST_PIPELINE_MAX_DEPTH

ACAMERA_REQUEST_PIPELINE_MAX_DEPTH

指定帧从曝光到可供框架使用所需经过的最大流水线阶段数量。

类型:byte

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

典型的最小值为传感器处的 2 个阶段(一个曝光阶段,一个读出阶段)。ISP 通常会添加自己的阶段进行自定义硬件处理。软件处理可能会添加更多阶段。

根据使用的设置(例如 YUV、JPEG)和启用的处理(例如人脸检测),实际的流水线深度(由 ACAMERA_REQUEST_PIPELINE_DEPTH 指定)可能小于最大流水线深度。

X 个阶段的流水线深度相当于 X 个帧间隔的流水线延迟。

此值通常为 8 或更小,但对于高速捕获会话,最大流水线深度将高达 8 x 高速捕获请求列表的大小。

另请参阅: ACAMERA_REQUEST_PIPELINE_DEPTH

ACAMERA_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM

ACAMERA_SCALER_CROP_REGION 的活动区域宽度与裁剪区域宽度之比,以及活动区域高度与裁剪区域高度之比的最大值。

另请参阅: ACAMERA_SCALER_CROP_REGION

类型:float

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这表示相机设备可能实现的最大变焦量,或等效于最小裁剪窗口大小。

宽度或高度小于此比例允许的裁剪区域将被相机设备向上舍入到允许的最小尺寸。

从 API 级别 30 开始,使用 ACAMERA_CONTROL_ZOOM_RATIO 放大或缩小时,应用必须使用 ACAMERA_CONTROL_ZOOM_RATIO_RANGE 查询最小和最大变焦比。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_CONTROL_ZOOM_RATIO_RANGE

ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS

这列出了每种格式/尺寸组合的最小帧持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这应对应于仅当该流处于活动状态时(所有处理(通常在 android.*.mode 中)设置为 OFF 或 FAST)的帧持续时间。

当在请求中使用多个流时,最小帧持续时间将是 max(单个流最小持续时间)。

有关计算最大帧率的更多详细信息,请参阅 ACAMERA_SENSOR_FRAME_DURATIONACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 另请参阅: ACAMERA_SENSOR_FRAME_DURATION

ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS_MAXIMUM_RESOLUTION

当向相机设备发送一个将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequest 时,这列出了每种格式/尺寸组合的最小帧持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时的配置。

当请求中使用多个流时(如果支持,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时),最小帧持续时间将为 max(单个流最小持续时间)。

有关计算最大帧率的更多详细信息,请参阅 ACAMERA_SENSOR_FRAME_DURATIONACAMERA_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION

另请参阅: ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS 另请参阅: ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_FRAME_DURATION 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP

此相机设备支持的输入流图像格式与其对应输出格式的建议映射。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是 android.scaler.availableInputOutputFormatsMap 中找到的完整映射列表的建议子集。此处同样适用相同的要求。但是,该列表无需包含所有可用和支持的映射。相反,开发者必须仅列出推荐且高效的条目。如果设置,信息将可在 ZERO_SHUTTER_LAG 推荐流配置中找到,请参见 CameraCharacteristics::getRecommendedStreamConfigurationMap

ACAMERA_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS

常见客户端用例的推荐流配置。

类型:int32[n*5] (acamera_metadata_enum_android_scaler_available_recommended_stream_configurations_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 的可选子集,其中包含类似元组列表(即 width, height, format, output/input stream, usecase bit field)。相机设备将能够为特定用例推荐功耗和性能高效的流配置。有关检索建议的更多信息,请参见 CameraCharacteristics::getRecommendedStreamConfigurationMap

数据表示为 int[5],映射到 (width, height, format, output/input stream, usecase bit field)。可以使用以下伪代码解析该数组

struct StreamConfiguration { int32_t format; int32_t width; int32_t height; int32_t isInput; };

void getPreferredStreamConfigurations( int32_t *array, size_t count, int32_t usecaseId, Vector < StreamConfiguration > * scs) { const size_t STREAM_CONFIGURATION_SIZE = 5; const size_t STREAM_WIDTH_OFFSET = 0; const size_t STREAM_HEIGHT_OFFSET = 1; const size_t STREAM_FORMAT_OFFSET = 2; const size_t STREAM_IS_INPUT_OFFSET = 3; const size_t STREAM_USECASE_BITMAP_OFFSET = 4;

for (size_t i = 0; i < count; i+= STREAM_CONFIGURATION_SIZE) {
    int32_t width = array[i + STREAM_WIDTH_OFFSET];
    int32_t height = array[i + STREAM_HEIGHT_OFFSET];
    int32_t format = array[i + STREAM_FORMAT_OFFSET];
    int32_t isInput = array[i + STREAM_IS_INPUT_OFFSET];
    int32_t supportedUsecases = array[i + STREAM_USECASE_BITMAP_OFFSET];
    if (supportedUsecases & (1 << usecaseId)) {
        StreamConfiguration sc = {format, width, height, isInput};
        scs->add(sc);
    }
}

}

另请参阅: ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS

ACAMERA_SCALER_AVAILABLE_ROTATE_AND_CROP_MODES

该相机设备支持的 ACAMERA_SCALER_ROTATE_AND_CROP 的旋转和裁剪模式列表。

另请参见: ACAMERA_SCALER_ROTATE_AND_CROP

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此条目列出了此相机设备的 ACAMERA_SCALER_ROTATE_AND_CROP 的有效模式。

从 API 级别 30 开始,所有设备将至少列出 ROTATE_AND_CROP_NONE。支持旋转和裁剪的设备将额外列出至少 ROTATE_AND_CROP_AUTOROTATE_AND_CROP_90

另请参见: ACAMERA_SCALER_ROTATE_AND_CROP

ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

此条目列出了每种输出格式/尺寸组合的最大停滞持续时间。

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

停止持续时间是指对于包含非零停止流的重复请求,会在正常的最小帧持续时间上额外增加的时间。

例如,考虑具有以下特性的 JPEG 捕获

  • JPEG 流在不包含它们的请求中表现为已处理的 YUV 流;在直接引用它们的请求中,它们表现为 JPEG 流。这是因为支持 JPEG 流需要底层 YUV 数据始终准备好供 JPEG 编码器使用,但编码器仅在实际引用 JPEG 流的请求上使用(并影响帧持续时间)。
  • JPEG 处理器可以与相机管道的其余部分并行运行,但一次只能处理 1 个捕获。

换句话说,使用重复的 YUV 请求将导致稳定的帧率(假设为 30 FPS)。如果定期提交单个 JPEG 请求,帧率将保持在 30 FPS(只要我们每次都等待前一个 JPEG 返回)。如果我们尝试提交重复的 YUV + JPEG 请求,则帧率将从 30 FPS 下降。

通常,提交具有非零停滞时间流的新请求不会导致帧率下降,除非该流在前一个请求中仍有未处理的缓冲区。

提交带有流(称之为 S)的重复请求,与将最小帧持续时间设置为对应于 S 的正常最小帧持续时间加上 S 的最大停滞持续时间相同。

如果交替提交带有和不带有停滞持续时间的请求,则请求将按照每个具有未处理缓冲区的可停滞流的剩余时间中的最大值进行停滞。

这意味着停滞请求直到停滞完成后才会开始曝光。

这应与仅该流处于活动状态时,且所有处理(通常在 android.*.mode 中)设置为 FAST 或 OFF 时的停滞持续时间相对应。将任何处理模式设置为 HIGH_QUALITY 将有效地导致请求中所有流的停滞持续时间不确定(忽略常规的停滞计算规则)。

以下格式可能始终具有停滞持续时间

以下格式永远不会有停滞持续时间

所有其他格式可能允许或可能不允许基于每个功能有停滞持续时间;有关详细信息,请参见 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES。

有关计算最大帧率(无停滞时)的更多信息,请参见 ACAMERA_SENSOR_FRAME_DURATION。

另请参见: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 另请参见: ACAMERA_SENSOR_FRAME_DURATION

ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS_MAXIMUM_RESOLUTION

此条目列出了当 CaptureRequests 使用 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 提交时,每种输出格式/尺寸组合的最大停滞持续时间。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int64[4*n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,适用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时的配置。

另请参见: ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS 另请参见: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS

该相机设备支持的可用流配置(即 format, width, height, output/input stream)。

类型:int32[n*4] (acamera_metadata_enum_android_scaler_available_stream_configurations_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

配置以 (format, width, height, input?) 元组的形式列出。

对于给定的用例,实际支持的最大分辨率可能低于此处列出的值,具体取决于图像数据的目标 Surface。例如,对于录制视频,所选的视频编码器可能具有小于相机(例如最大分辨率为 3264x2448)能够提供的最大尺寸限制(例如 1080p)。

请查阅图像数据目标文档,以检查它是否限制了图像数据的最大尺寸。

并非所有输出格式都可能在具有特定格式输入流的配置中得到支持。有关详细信息,请参见 android.scaler.availableInputOutputFormatsMap。

对于目标 SDK 版本低于 31 的应用程序,下表描述了基于硬件级别 (ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL) 的最低要求输出流配置

格式 | 尺寸 | 硬件级别 | 备注
:----------:|:-----------------------------------------:|:-----------:|:-----------:
JPEG | ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE | Any |
JPEG | 1920x1080 (1080p) | Any | 如果 1080p <= activeArraySize
JPEG | 1280x720 (720p) | Any | 如果 720p <= activeArraySize
JPEG | 640x480 (480p) | Any | 如果 480p <= activeArraySize
JPEG | 320x240 (240p) | Any | 如果 240p <= activeArraySize
YUV_420_888 | 所有适用于 JPEG 的输出尺寸 | FULL |
YUV_420_888 | 所有适用于 JPEG 的输出尺寸,直至最大视频尺寸 | LIMITED |
IMPLEMENTATION_DEFINED | 与 YUV_420_888 相同 | Any |

对于目标 SDK 版本 31 或更高的应用程序,如果移动设备通过将 VERSION::MEDIA_PERFORMANCE_CLASS 设置为 31 或更大来声明为媒体性能等级 12 或更高,则主相机设备(相机 ID 列表中的第一个后置/前置相机)将不支持小于 1080p 的 JPEG 尺寸。如果应用程序配置小于 1080p 的 JPEG 流,相机设备将把 JPEG 图像尺寸向上取整至至少 1080p。IMPLEMENTATION_DEFINED 和 YUV_420_888 的要求保持不变。下表说明了这些新的最低要求输出流配置

格式 | 尺寸 | 硬件级别 | 备注
:----------:|:-----------------------------------------:|:-----------:|:-----------:
JPEG | ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE | Any |
JPEG | 1920x1080 (1080p) | Any | 如果 1080p <= activeArraySize
YUV_420_888 | ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE | FULL |
YUV_420_888 | 1920x1080 (1080p) | FULL | 如果 1080p <= activeArraySize
YUV_420_888 | 1280x720 (720p) | FULL | 如果 720p <= activeArraySize
YUV_420_888 | 640x480 (480p) | FULL | 如果 480p <= activeArraySize
YUV_420_888 | 320x240 (240p) | FULL | 如果 240p <= activeArraySize
YUV_420_888 | 所有适用于 FULL 硬件级别的输出尺寸,直至最大视频尺寸 | LIMITED |
IMPLEMENTATION_DEFINED | 与 YUV_420_888 相同 | Any |

对于目标 SDK 版本 31 或更新的应用程序,如果移动设备未通过将 VERSION::MEDIA_PERFORMANCE_CLASS 设置为 31 或更大来声明为媒体性能等级 12 或更高,或者相机设备不是主后置/前置相机,则最低要求输出流配置与目标 SDK 版本低于 31 的应用程序相同。

对于每个功能,有关附加的强制流配置,请参阅 ACAMERA_REQUEST_AVAILABLE_CAPABILITIES。

176x144 (QCIF) 分辨率异常:相机设备通常具有从较大分辨率缩小到较小分辨率的固定能力,并且在高分辨率图像传感器设备上,由于此限制,有时 QCIF 分辨率无法完全支持。因此,尝试将 QCIF 分辨率流与任何大于 1920x1080 分辨率(无论是宽度还是高度)的其他流一起配置可能不受支持,如果不受支持,捕获会话创建将失败。

另请参见: ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL 另请参见: ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 另请参见: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE

ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_MAXIMUM_RESOLUTION

此相机设备支持的可用流配置(即 format, width, height, output/input stream),用于将 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的 CaptureRequest。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int32[n*4] (acamera_metadata_enum_android_scaler_available_stream_configurations_maximum_resolution_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,用于当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时适用的配置。

并非所有输出格式都可能在具有特定格式输入流的配置中得到支持。有关详细信息,请参见 android.scaler.availableInputOutputFormatsMapMaximumResolution。

另请参见: ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 另请参见: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES

此相机设备支持的流用例。

类型:int64[n] (acamera_metadata_enum_android_scaler_available_stream_use_cases_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

流用例从最终用户角度指明特定相机流的目的。一些相机用例示例包括:用于向用户显示实时取景器的预览流、用于生成高质量照片捕获的静止捕获、用于将相机输出编码以便将来回放的视频录制,以及用于实时视频会议的视频通话。

使用此标志,相机设备可以独立于即时相机输出 Surface 的属性来优化图像处理管道参数,例如调优、传感器模式和 ISP 设置。例如,如果输出 Surface 是 SurfaceTexture,流用例标志可以用来指示相机帧最终是用于显示、视频编码器、静止图像捕获,还是它们的组合。

应用程序通过调用 OutputConfiguration::setStreamUseCase 来设置相机流的用例。

具有 CameraCharacteristics::REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE 功能的相机设备必须支持以下流用例

  • DEFAULT
  • PREVIEW
  • STILL_CAPTURE
  • VIDEO_RECORD
  • PREVIEW_VIDEO_STILL
  • VIDEO_CALL

具有 CameraCharacteristics::REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE 功能的相机设备与流用例相关的保证流组合记录在相机设备 指南 中。强烈建议应用程序使用其中一个保证的流组合。如果应用程序创建的会话使用的流组合不在保证列表中,或者在同一会话中混合使用 DEFAULT 和非 DEFAULT 用例,相机设备可能会由于硬件限制和实现细节而忽略某些流用例。

对于流用例强制列表未涵盖的流组合,例如可再处理会话、约束高速会话或 RAW 流组合,应用程序应将会话中的流用例保留为 DEFAULT。

ACAMERA_SCALER_CROPPING_TYPE

该相机设备支持的裁剪类型。

类型:byte (acamera_metadata_enum_android_scaler_cropping_type_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

当将非中心裁剪区域 (ACAMERA_SCALER_CROP_REGION) 传递给仅支持 CENTER_ONLY 裁剪的相机设备时,相机设备会将裁剪区域移动到传感器活动区域 (ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE) 的中心,并保持裁剪区域的宽度和高度不变。相机设备将在元数据结果 ACAMERA_SCALER_CROP_REGION 中返回最终使用的裁剪区域。

支持 FREEFORM 裁剪的相机设备将支持活动区域内的任何裁剪区域。相机设备将应用相同的裁剪区域,并在捕获结果元数据 ACAMERA_SCALER_CROP_REGION 中返回最终使用的裁剪区域。

从 API 级别 30 开始,

  • 如果相机设备支持 FREEFORM 裁剪,为了执行 FREEFORM 裁剪,应用程序必须将 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0,并使用 ACAMERA_SCALER_CROP_REGION 进行缩放。
  • 要执行 CENTER_ONLY 缩放,应用程序有以下 2 个选项
    1. 将 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0;通过 ACAMERA_SCALER_CROP_REGION 调整缩放。
    2. 通过 ACAMERA_CONTROL_ZOOM_RATIO 调整缩放;使用 ACAMERA_SCALER_CROP_REGION 垂直裁剪(letterboxing)或水平裁剪(pillarboxing)视野,但不是 windowboxing。
  • 同时将 ACAMERA_CONTROL_ZOOM_RATIO 设置为不等于 1.0 的值并将 ACAMERA_SCALER_CROP_REGION 设置为 windowboxing 不受支持。在这种情况下,相机框架将覆盖 ACAMERA_SCALER_CROP_REGION 为活动区域。

LEGACY 功能设备仅支持 CENTER_ONLY 裁剪。

另请参见: ACAMERA_CONTROL_ZOOM_RATIO 另请参见: ACAMERA_SCALER_CROP_REGION 另请参见: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE

ACAMERA_SCALER_CROP_REGION

对于此捕获,希望从传感器读取的区域。

类型:int32[4]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此控制可用于实现数字缩放。

对于不支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系始终遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的坐标系,其中 (0, 0) 是活动区域的左上角像素。

对于支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系取决于设置的模式。当失真校正模式为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是预校正活动区域的左上角像素。当失真校正模式不为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是活动区域的左上角像素。

输出流使用此矩形生成其输出,如果需要,会裁剪到较小区域以保持流的宽高比,然后缩放传感器输入以匹配输出的配置分辨率。

裁剪区域通常在 RAW 转换为其他颜色空间(例如 YUV)之后应用。因此,除非相机设备支持,否则 RAW 流不可裁剪。有关详细信息,请参见 ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES::CROPPED_RAW。

对于非 RAW 流,将进行任何额外的按流裁剪,以最大化流的最终像素区域。

例如,如果裁剪区域设置为 4:3 的宽高比,则 4:3 流将使用精确的裁剪区域。16:9 流将进一步垂直裁剪(letterbox)。

相反,如果裁剪区域设置为 16:9,则 4:3 输出将水平裁剪(pillarbox),而 16:9 流将完全匹配。这些额外的裁剪将以裁剪区域为中心。

为了说明,以下是几种不同裁剪区域和输出流的场景,针对一个假设的相机设备,其活动区域尺寸为 (2000,1500)。请注意,其中一些示例为了便于说明使用了非中心裁剪区域;此类区域仅在具有 FREEFORM 功能的设备上受支持 (ACAMERA_SCALER_CROPPING_TYPE == FREEFORM),但这不影响裁剪规则的其他工作方式。

  • 相机配置
    • 有效阵列尺寸:2000x1500 (3 MP, 4:3 宽高比)
    • 输出流 #1:640x480 (VGA, 4:3 宽高比)
    • 输出流 #2:1280x720 (720p, 16:9 宽高比)
  • 案例 #1:4:3 裁剪区域,带 2 倍数字变焦
    • 裁剪区域:Rect(500, 375, 1500, 1125) // (left, top, right, bottom)
    • 640x480 流源区域:(500, 375, 1500, 1125) (等于裁剪区域)
    • 1280x720 流源区域:(500, 469, 1500, 1031) (letterboxed)
  • 案例 #2:16:9 裁剪区域,带约 1.5 倍数字变焦。
    • 裁剪区域:Rect(500, 375, 1833, 1125)
    • 640x480 流源区域:(666, 375, 1666, 1125) (pillarboxed)
    • 1280x720 流源区域:(500, 375, 1833, 1125) (等于裁剪区域)
  • 案例 #3:1:1 裁剪区域,带约 2.6 倍数字变焦。
    • 裁剪区域:Rect(500, 375, 1250, 1125)
    • 640x480 流源区域:(500, 469, 1250, 1031) (letterboxed)
    • 1280x720 流源区域:(500, 543, 1250, 957) (letterboxed)
  • 案例 #4:将 640x480 流替换为 1024x1024 流,使用 4:3 裁剪区域
    • 裁剪区域:Rect(500, 375, 1500, 1125)
    • 1024x1024 流源区域:(625, 375, 1375, 1125) (pillarboxed)
    • 1280x720 流源区域:(500, 469, 1500, 1031) (letterboxed)
    • 请注意,在这种情况下,两个输出都不是另一个的子集,每个输出都包含另一个不具备的图像数据。

如果坐标系是 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,裁剪区域的宽度和高度不能分别设置为小于 floor( activeArraySize.width / ACAMERA_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM )floor( activeArraySize.height / ACAMERA_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM )

如果坐标系是 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,裁剪区域的宽度和高度不能分别设置为小于 floor( preCorrectionActiveArraySize.width / ACAMERA_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM )floor( preCorrectionActiveArraySize.height / ACAMERA_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM )

相机设备可能会调整裁剪区域以考虑舍入和其他硬件要求;最终使用的裁剪区域将包含在输出捕获结果中。

相机传感器输出的宽高比取决于输出流组合和 ACAMERA_CONTROL_AE_TARGET_FPS_RANGE 等因素,不应通过使用此控制进行调整。相机设备会将不同的相机传感器输出尺寸(可能带有传感器内裁剪)视为 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的相同裁剪。因此,应用程序不应假设最大裁剪区域始终映射到传感器输出的相同宽高比或视野。

从 API 级别 30 开始,强烈建议使用 ACAMERA_CONTROL_ZOOM_RATIO 来利用对逻辑多相机的更好缩放支持。优点包括光学-数字缩放组合精度更高,以及能够从 1.0 倍缩小。使用 ACAMERA_CONTROL_ZOOM_RATIO 进行缩放时,捕获请求中的裁剪区域应保留为默认的 activeArray 尺寸。坐标系是缩放后的坐标系,这意味着 activeArraySize 或 preCorrectionActiveArraySize 涵盖了相机设备“缩放后”的视野。有关详细信息,请参见 ACAMERA_CONTROL_ZOOM_RATIO。

对于具有 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的相机设备,或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备

对于 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 的请求,必须使用 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION / ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 作为坐标系。

数据表示为 int[4],映射到(左、上、宽、高)。

另请参见: ACAMERA_CONTROL_AE_TARGET_FPS_RANGE 另请参见: ACAMERA_CONTROL_ZOOM_RATIO 另请参见: ACAMERA_DISTORTION_CORRECTION_MODE 另请参见: ACAMERA_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM 另请参见: ACAMERA_SCALER_AVAILABLE_STREAM_USE_CASES 另请参见: ACAMERA_SCALER_CROPPING_TYPE 另请参见: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参见: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参见: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参见: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参见: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SCALER_DEFAULT_SECURE_IMAGE_SIZE

用于请求安全图像缓冲区的默认 YUV/PRIVATE 尺寸。

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此条目列出了安全相机模式下支持的默认尺寸。支持 SECURE_IMAGE_DATA 功能的设备可选此条目。如果相机设备未列出 SECURE_IMAGE_DATA 功能,则此条目将为 null。

当此键存在时,相机 HAL 在安全相机模式下仅保证支持指定尺寸的 PRIVATE/YUV 输出。其他任何格式或分辨率可能不受支持。如果设备支持此 API,请使用 ACameraDevice_isSessionConfigurationSupported API 查询是否支持安全会话配置。

如果此键在具有 SECURE_IMAGE_DATA 功能的设备上返回 null,则应用程序可以假定 ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS 中列出的所有输出尺寸都受支持。

ACAMERA_SCALER_END
ACAMERA_SCALER_MULTI_RESOLUTION_STREAM_SUPPORTED

相机设备是否支持多分辨率输入或输出流

类型:byte (acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

逻辑多相机或超高分辨率相机可能支持多分辨率输入或输出流。通过多分辨率输出流,相机设备能够根据当前活动的物理相机或像素模式输出不同分辨率的图像。通过多分辨率输入流,相机设备可以从不同的物理相机或传感器像素模式重新处理不同分辨率的图像。

当设置为 TRUE 时

  • 对于逻辑多相机,相机框架通过组合其物理相机的 ACAMERA_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS 来派生 android.scaler.multiResolutionStreamConfigurationMap。
  • 对于超高分辨率传感器相机,相机框架直接将 ACAMERA_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS 的值复制到 android.scaler.multiResolutionStreamConfigurationMap。

另请参见: ACAMERA_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS

ACAMERA_SCALER_PHYSICAL_CAMERA_MULTI_RESOLUTION_STREAM_CONFIGURATIONS

此物理相机设备支持的可用多分辨率流配置(即 format, width, height, output/input stream)。

类型:int32[n*4] (acamera_metadata_enum_android_scaler_physical_camera_multi_resolution_stream_configurations_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此列表包含属于此物理相机的父逻辑相机的多分辨率流配置的子集,并且它将仅针对特定格式宣传和支持最大分辨率。

如果此相机设备不是构成逻辑相机的物理相机设备,而是独立的 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 相机,则此字段表示默认模式和最大分辨率模式的多分辨率输入/输出流配置。尺寸将是默认模式和最大分辨率模式下特定格式的最大分辨率。

仅当设备是逻辑多相机设备的物理相机或超高分辨率传感器相机时,才会宣传此字段。对于逻辑多相机,相机 API 将从所有物理相机派生逻辑相机的多分辨率流配置。对于超高分辨率传感器相机,此字段直接用作相机的多分辨率流配置。

ACAMERA_SCALER_RAW_CROP_REGION

当 RAW 流的流用例设置为 CROPPED_RAW 时,对应于此捕获的 RAW 读取的传感器区域。

类型:int32[4]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 的坐标系。

当相应的 CaptureRequest 具有 RAW 目标且流用例设置为 CameraMetadata::SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW 时,将设置此 CaptureResult 键,否则将为

null 
。此键的值指定了用于 RAW 捕获的传感器区域,并可用于计算 RAW 流的相应视野。对于此捕获,此视野将始终 >=(已处理的)非 RAW 流的视野。注意:指定的区域不一定居中。

例如:假设相机设备的预校正活动区域尺寸为

{0, 0, 1500, 2000} 
。如果 RAW_CROP_REGION 为
{500, 375, 1500, 1125} 
,则对应于全视野 RAW 流的 1/4 的中心裁剪。

描述 RAW 帧属性的元数据键

  • ACAMERA_STATISTICS_HOT_PIXEL_MAP
  • android.statistics.lensShadingCorrectionMap
  • ACAMERA_LENS_DISTORTION
  • ACAMERA_LENS_POSE_TRANSLATION
  • ACAMERA_LENS_POSE_ROTATION
  • ACAMERA_LENS_DISTORTION
  • ACAMERA_LENS_INTRINSIC_CALIBRATION

应在原始裁剪后的有效视野坐标系中解释。在此坐标系中,{ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.left, ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.top} 对应于裁剪后的 RAW 帧的左上角,{ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.right, ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE.bottom} 对应于右下角。如果存在,客户端应用程序必须使用 CaptureResult 元数据中的键值。

裁剪区域 ACAMERA_SCALER_CROP_REGION、AE/AWB/AF 区域和面部坐标仍然像往常一样使用 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 坐标系。

另请参见: ACAMERA_LENS_DISTORTION 另请参见: ACAMERA_LENS_INTRINSIC_CALIBRATION 另请参见: ACAMERA_LENS_POSE_ROTATION 另请参见: ACAMERA_LENS_POSE_TRANSLATION 另请参见: ACAMERA_SCALER_CROP_REGION 另请参见: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参见: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参见: ACAMERA_STATISTICS_HOT_PIXEL_MAP

ACAMERA_SCALER_ROTATE_AND_CROP

是否对相机处理后的输出应用旋转和裁剪操作。

类型:byte (acamera_metadata_enum_android_scaler_rotate_and_crop_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此控制主要用于帮助不支持多窗口模式的相机应用程序在多窗口场景不可避免的设备上正常工作,例如折叠屏设备或其他具有可变显示几何形状或更自由窗口放置(例如笔记本电脑,通常在横向模式下用 pillarboxing 放置纵向应用程序)的设备。

如果支持,默认值为 ROTATE_AND_CROP_AUTO,这允许相机 API 在设备实际处于多窗口模式(例如笔记本电脑上的嵌入纵向模式,或折叠屏设备在某些折叠状态下)时,为不支持调整大小/多窗口模式的应用程序启用向后兼容性支持。此外,如果设备支持此控制,则始终提供 ROTATE_AND_CROP_NONEROTATE_AND_CROP_90。如果不支持,API 级别 30 或更高的设备将始终只列出 ROTATE_AND_CROP_NONE

当使用 CROP_AUTO 并且相机 API 激活向后兼容模式时,一些元数据字段也会以不同方式解析,以确保正确处理坐标,用于绘制人脸检测框或传递点击对焦坐标等功能。相机 API 将在活动区域坐标系和裁剪旋转后的坐标系之间转换位置,以使操作对应用程序透明。受影响的控制如下

  • ACAMERA_CONTROL_AE_REGIONS
  • ACAMERA_CONTROL_AF_REGIONS
  • ACAMERA_CONTROL_AWB_REGIONS
  • android.statistics.faces

捕获结果将包含 API 选择的实际值;在捕获结果中永远不会看到 ROTATE_AND_CROP_AUTO

应用程序还可以选择其偏好的裁剪模式,以选择退出向后兼容处理,或根据需要自行使用裁剪功能。在这种情况下,不会自动进行坐标转换,所有控制将继续使用正常的活动区域坐标。

裁剪和旋转是在应用数字变焦(通过 ACAMERA_SCALER_CROP_REGION 或 ACAMERA_CONTROL_ZOOM_RATIO)之后进行,但在对每个单独输出进一步裁剪和缩放之前进行。它仅影响已处理的输出,例如 YUV、PRIVATE 和 JPEG。它对 RAW 输出没有影响。

当选择 CROP_90CROP_270 时,视野会显著损失。例如,对于 1600x1200 的 4:3 宽高比输出,CROP_90 仍会产生 1600x1200 的输出,但这些缓冲区是从 4:3 区域中心的一个垂直 3:4 切片裁剪而来,然后旋转为 4:3,再放大到 1600x1200。原始 FOV 只有 56.25% 仍然可见。通常,对于宽高比为 w:h 的情况,裁剪和旋转操作会保留 (h/w)^2 的视野。对于 16:9,这是约 31.6%。

作为视觉示例,下图显示了 ROTATE_AND_CROP_90 对以下参数输出的影响

  • 传感器活动区域:2000x1500
  • 裁剪区域:左上角:(500, 375),尺寸:(1000, 750) (4:3 宽高比)
  • 输出流:YUV 640x480 和 YUV 1280x720
  • ROTATE_AND_CROP_90

通过这些设置,输出流覆盖的活动阵列区域如下:

  • 640x480 流裁剪:左上角:(219, 375),大小:(562, 750)
  • 1280x720 流裁剪:左上角:(289, 375),大小:(422, 750)

由于缓冲区已旋转,应用程序看到的缓冲区如下:

  • 640x480 流:在活动阵列上的左上角:(781, 375),大小:(640, 480),从传感器像素缩减 1.17 倍
  • 1280x720 流:在活动阵列上的左上角:(711, 375),大小:(1280, 720),从传感器像素放大 1.71 倍

另请参阅: ACAMERA_CONTROL_AE_REGIONS 另请参阅: ACAMERA_CONTROL_AF_REGIONS 另请参阅: ACAMERA_CONTROL_AWB_REGIONS 另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_SCALER_CROP_REGION

ACAMERA_SENSOR_AVAILABLE_TEST_PATTERN_MODES

此相机设备支持的 ACAMERA_SENSOR_TEST_PATTERN_MODE 传感器测试图案模式列表。

另请参阅: ACAMERA_SENSOR_TEST_PATTERN_MODE

类型:int32[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

默认为 OFF,如果定义,则始终包含 OFF。

ACAMERA_SENSOR_BLACK_LEVEL_PATTERN

针对每个滤色器阵列 (CFA) 马赛克通道的固定黑电平偏移。

类型:int32[4]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此键指定相机传感器中每个 CFA 马赛克通道的零光值。传感器输出的最大值由 ACAMERA_SENSOR_INFO_WHITE_LEVEL 中的值表示。

值按 CFA 布局键列出的通道顺序给出(参见 ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT),即给出的第 n 个值对应于 CFA 中列出的第 n 个颜色通道的黑电平偏移。

捕获图像的黑电平值可能因不同的捕获设置(例如 ACAMERA_SENSOR_SENSITIVITY)而异。此键表示对此类情况的粗略近似值。当相机设备支持时,建议使用 ACAMERA_SENSOR_DYNAMIC_BLACK_LEVEL 或直接使用 ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 中的像素进行捕获,这样可以提供更准确的黑电平值。特别是对于原始捕获,建议使用 ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 中的像素来计算每一帧的黑电平值。

对于 MONOCHROME 相机设备,所有 2x2 通道必须具有相同的值。

另请参阅: ACAMERA_SENSOR_DYNAMIC_BLACK_LEVEL 另请参阅: ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT 另请参阅: ACAMERA_SENSOR_INFO_WHITE_LEVEL 另请参阅: ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_SENSOR_CALIBRATION_TRANSFORM1

一个逐设备的校准转换矩阵,将参考传感器颜色空间映射到实际设备传感器颜色空间。

类型:rational[3*3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此矩阵用于校正传感器颜色空间中逐设备的差异,并用于处理原始缓冲区数据。

该矩阵表示为行优先顺序的 3x3 矩阵,并包含逐设备的校准转换,该转换在第一个参考光源 (ACAMERA_SENSOR_REFERENCE_ILLUMINANT1) 下将颜色从参考传感器颜色空间(即“黄金模块”颜色空间)映射到此相机设备的本地传感器颜色空间。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT1

ACAMERA_SENSOR_CALIBRATION_TRANSFORM2

一个逐设备的校准转换矩阵,将参考传感器颜色空间映射到实际设备传感器颜色空间(即原始缓冲区数据的颜色空间)。

类型:rational[3*3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此矩阵用于校正传感器颜色空间中逐设备的差异,并用于处理原始缓冲区数据。

该矩阵表示为行优先顺序的 3x3 矩阵,并包含逐设备的校准转换,该转换在第二个参考光源 (ACAMERA_SENSOR_REFERENCE_ILLUMINANT2) 下将颜色从参考传感器颜色空间(即“黄金模块”颜色空间)映射到此相机设备的本地传感器颜色空间。

此矩阵仅在存在第二个参考光源时才会出现。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT2

ACAMERA_SENSOR_COLOR_TRANSFORM1

一个将颜色值从 CIE XYZ 颜色空间转换为参考传感器颜色空间的矩阵。

类型:rational[3*3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此矩阵用于从标准 CIE XYZ 颜色空间转换到参考传感器颜色空间,并用于处理原始缓冲区数据。

该矩阵表示为行优先顺序的 3x3 矩阵,并包含一个颜色转换矩阵,该矩阵在第一个参考光源 (ACAMERA_SENSOR_REFERENCE_ILLUMINANT1) 下将颜色从 CIE XYZ 颜色空间映射到参考传感器颜色空间(即“黄金模块”颜色空间)。

在计算此转换时,参考传感器颜色空间和 CIE XYZ 颜色空间中选择的白点将与第一个参考光源的标准白点匹配(即此转换不会应用色度适应)。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT1

ACAMERA_SENSOR_COLOR_TRANSFORM2

一个将颜色值从 CIE XYZ 颜色空间转换为参考传感器颜色空间的矩阵。

类型:rational[3*3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此矩阵用于从标准 CIE XYZ 颜色空间转换到参考传感器颜色空间,并用于处理原始缓冲区数据。

该矩阵表示为行优先顺序的 3x3 矩阵,并包含一个颜色转换矩阵,该矩阵在第二个参考光源 (ACAMERA_SENSOR_REFERENCE_ILLUMINANT2) 下将颜色从 CIE XYZ 颜色空间映射到参考传感器颜色空间(即“黄金模块”颜色空间)。

在计算此转换时,参考传感器颜色空间和 CIE XYZ 颜色空间中选择的白点将与第二个参考光源的标准白点匹配(即此转换不会应用色度适应)。

此矩阵仅在存在第二个参考光源时才会出现。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT2

ACAMERA_SENSOR_DYNAMIC_BLACK_LEVEL

针对每个滤色器阵列 (CFA) 马赛克通道的每帧动态黑电平偏移。

类型:float[4]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

相机传感器黑电平可能因不同的捕获设置(例如 ACAMERA_SENSOR_SENSITIVITY)而发生显着变化。由 ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 报告的固定黑电平可能过于不准确,无法表示每帧的实际值。相机设备内部管道依赖于可靠的黑电平值来适当处理原始图像。为了获得最佳图像质量,相机设备可以选择基于光学遮蔽的黑色区域 (ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS) 或其内部模型来估计每帧的黑电平值。

此键报告相机设备估计的每帧零光值,适用于相机传感器中的每个 CFA 马赛克通道。ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 可能仅代表实际黑电平值的粗略近似值。该值是相机设备内部图像处理管道中使用的黑电平,通常比固定黑电平值更准确。然而,由于它们是相机设备估计的值,因此可能不如由 ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 报告的光学黑色像素计算出的黑电平值准确。

值按 CFA 布局键列出的通道顺序给出(参见 ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT),即给出的第 n 个值对应于 CFA 中列出的第 n 个颜色通道的黑电平偏移。

对于单色相机,所有 2x2 通道必须具有相同的值。

如果 ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 可用,或相机设备通过 ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS 宣传此键,则此键将可用。

另请参阅: ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 另请参阅: ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT 另请参阅: ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_SENSOR_DYNAMIC_WHITE_LEVEL

该帧传感器输出的最大原始值。

类型:int32

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

由于 ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 可能因不同的捕获设置(例如 ACAMERA_SENSOR_SENSITIVITY)而改变,白电平也将相应改变。此键类似于 ACAMERA_SENSOR_INFO_WHITE_LEVEL,但指定相机设备估计的每帧白电平。

如果 ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 可用,或相机设备通过 ACAMERA_REQUEST_AVAILABLE_RESULT_KEYS 宣传此键,则此键将可用。

另请参阅: ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 另请参阅: ACAMERA_SENSOR_INFO_WHITE_LEVEL 另请参阅: ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_SENSOR_END
ACAMERA_SENSOR_EXPOSURE_TIME

每个像素曝光于光线的时间。

类型:int64

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

如果传感器无法精确曝光此持续时间,它会将曝光持续时间缩短到最接近的可能值(而不是延长曝光)。最终使用的曝光时间将在输出捕获结果中提供。

此控制仅在 ACAMERA_CONTROL_AE_MODEACAMERA_CONTROL_MODE 设置为 OFF 时有效;否则自动曝光算法将覆盖此值。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_MODE

ACAMERA_SENSOR_FORWARD_MATRIX1

一个矩阵,将白平衡相机颜色从参考传感器颜色空间转换为具有 D50 白点的 CIE XYZ 颜色空间。

类型:rational[3*3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此矩阵用于转换为标准 CIE XYZ 颜色空间,并用于处理原始缓冲区数据。

该矩阵表示为行优先顺序的 3x3 矩阵,并包含一个颜色转换矩阵,该矩阵将白平衡颜色从参考传感器颜色空间映射到具有 D50 白点的 CIE XYZ 颜色空间。

在第一个参考光源 (ACAMERA_SENSOR_REFERENCE_ILLUMINANT1) 下,选择此矩阵,以便此参考光源在参考传感器颜色空间中的标准白点映射到 CIE XYZ 颜色空间中的 D50。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT1

ACAMERA_SENSOR_FORWARD_MATRIX2

一个矩阵,将白平衡相机颜色从参考传感器颜色空间转换为具有 D50 白点的 CIE XYZ 颜色空间。

类型:rational[3*3]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此矩阵用于转换为标准 CIE XYZ 颜色空间,并用于处理原始缓冲区数据。

该矩阵表示为行优先顺序的 3x3 矩阵,并包含一个颜色转换矩阵,该矩阵将白平衡颜色从参考传感器颜色空间映射到具有 D50 白点的 CIE XYZ 颜色空间。

在第二个参考光源 (ACAMERA_SENSOR_REFERENCE_ILLUMINANT2) 下,选择此矩阵,以便此参考光源在参考传感器颜色空间中的标准白点映射到 CIE XYZ 颜色空间中的 D50。

此矩阵仅在存在第二个参考光源时才会出现。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT2

ACAMERA_SENSOR_FRAME_DURATION

从帧读取开始到下一帧读取开始的持续时间。

类型:int64

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

相机子系统支持的最大帧率是许多因素的函数

  • 请求的输出图像流分辨率
  • 成像器上 Binning / 跳过模式的可用性
  • 成像器接口的带宽
  • 各种 ISP 处理块的带宽

由于这些因素在不同的 ISP 和传感器之间可能差异很大,相机抽象尝试用尽可能简单的模型来表示带宽限制。

提出的模型具有以下特点

  • 图像传感器始终配置为输出应用程序请求的输出流尺寸下可能支持的最小分辨率。最小分辨率被定义为至少与请求的最大输出流尺寸一样大;当裁剪区域覆盖整个传感器时,相机管道绝不能对传感器数据进行数字放大。一般来说,这意味着如果仅配置小分辨率的输出流,传感器可以提供更高的帧率。
  • 由于任何请求都可以使用当前配置的任何或所有输出流,传感器和 ISP 必须配置为支持同时将单次捕获缩放到所有流。这意味着相机管道必须准备好立即产生请求的最大输出尺寸。因此,给定配置的流集的总帧率仅取决于请求的最大流分辨率。
  • 在一个请求中使用多个输出流不影响帧持续时间。
  • 某些格式流在数据被该流消耗/产生之前可能需要执行额外的后台处理。这些处理器可以与相机管道的其余部分并发运行,但一次只能处理一次捕获。

根据上述模型,应用程序所需的信息通过 ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS 提供。这些信息用于确定给定流配置可能支持的最大帧率/最小帧持续时间。

具体来说,应用程序可以使用以下规则来确定它可以从相机设备请求的最小帧持续时间

  1. 将当前配置的输入/输出流集称为 S
  2. 通过在 ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS 中查找 S 中的每个流(及其相应的尺寸/格式),找到它们的最小帧持续时间。将此帧持续时间集称为 F
  3. 对于任何给定的请求 R,允许的最小帧持续时间是 F 中所有值的最大值。将 R 中使用的流称为 S_r

如果 S_r 中的所有流都没有延迟时间(在 ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS 中使用其相应的尺寸/格式列出),则 F 中的帧持续时间决定了应用程序如果将 R 用作重复请求将获得的稳态帧率。将这种特殊类型的请求称为 Rsimple

重复请求 Rsimple 可以**偶尔**穿插新的请求 Rstall 的单次捕获(至少有一个使用中的流具有非零延迟时间),如果 Rstall 具有相同的最小帧持续时间,并且所有来自上一个 Rstall 的缓冲区都已送达,则这不会导致帧率损失。

有关延迟的更多详细信息,请参阅 ACAMERA_SCALER_AVAILABLE_STALL_DURATIONS

此控制仅在 ACAMERA_CONTROL_AE_MODEACAMERA_CONTROL_MODE 设置为 OFF 时有效;否则自动曝光算法将覆盖此值。

注意:在 Android 13 之前,此字段被描述为测量从帧曝光开始到下一帧曝光开始的持续时间,这与传感器制造商的定义不符。移动传感器将帧持续时间定义为传感器读取之间的间隔。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_MODE

ACAMERA_SENSOR_GREEN_SPLIT

Bayer 绿色通道之间最坏情况下的差异。

类型:float

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

此值估计了传感器滤色器阵列中红色和蓝色行中 Bayer 绿色通道之间的最坏情况下的分裂。

绿色分裂计算如下

  1. 选择活动传感器阵列内的 5x5 像素(或更大)窗口 W。这里的“像素”指代 4 个 Bayer 马赛克通道(R、Gr、Gb、B)的组。所选窗口的位置和大小是实现定义的,应选择一个能代表整个相机传感器图像且能快速计算的绿色分裂估计值。
  2. 计算 W 内红色行的绿色通道的算术平均值 (mean_Gr)。
  3. 计算 W 内蓝色行的绿色通道的算术平均值 (mean_Gb)。
  4. 计算两个平均值之间的最大比率 R 如下:R = max((mean_Gr + 1)/(mean_Gb + 1), (mean_Gb + 1)/(mean_Gr + 1))

比率 R 是此属性报告的绿色分裂差异,它表示绿色通道在马赛克图案中的差异程度。此值通常用于确定在去马赛克时如何处理绿色马赛克通道。

绿色分裂值可粗略解释如下

  • R < 1.03 表示可忽略的分裂(<3% 差异)。
  • 1.20 <= R >= 1.03 需要一些软件校正以避免去马赛克错误(3-20% 差异)。
  • R > 1.20 需要强力软件校正才能生成可用图像(>20% 差异)。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE

应用任何几何畸变校正后,图像传感器中对应活动像素的区域。

类型:int32[4]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是表示传感器活动区域大小(即实际接收场景光线的区域)的矩形,在应用任何几何校正后,应视为除原始格式之外任何图像输出格式的最大像素尺寸。

此矩形相对于完整像素阵列定义;(0,0) 是完整像素阵列的左上角,完整像素阵列的大小由 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 给出。

大多数列出像素坐标的其他键的坐标系统(包括 ACAMERA_SCALER_CROP_REGION)相对于此字段中给出的活动阵列矩形定义,其中 (0, 0) 是此矩形的左上角。

活动阵列可能小于完整像素阵列,因为完整阵列可能包含黑色校准像素或其他非活动区域。

对于不支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,活动阵列必须与 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 相同。

对于支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,活动阵列必须包含在 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 内。预校正活动阵列和活动阵列之间的差异考虑了镜头几何畸变校正导致的缩放或裁剪。

一般来说,应用程序应始终参考活动阵列大小进行诸如测光区域或裁剪区域之类的控制。有两个例外情况:当应用程序处理 RAW 图像缓冲区(RAW_SENSOR、RAW10、RAW12 等)时,或者当应用程序明确将 ACAMERA_DISTORTION_CORRECTION_MODE 设置为 OFF 时。在这些情况下,应用程序应参考 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

数据表示为 int[4],映射到 (left, top, width, height)

另请参阅: ACAMERA_DISTORTION_CORRECTION_MODE 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION

当传感器以最大分辨率模式运行时,应用任何几何畸变校正后,图像传感器中对应活动像素的区域。

类型:int32[4]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时。有关详细信息,请参阅 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中传感器阵列相关键被其 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 对应项替换。此键仅适用于宣传 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的设备,或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备。

数据表示为 int[4],映射到 (left, top, width, height)

另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SENSOR_INFO_BINNING_FACTOR

位于同一滤色器下的像素组的尺寸。这指定了超高分辨率传感器位于同一滤色器下的像素组的宽度和高度(一对整数)。

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

传感器可以将像素分组到同一滤色器下,以改善成像的各个方面,例如降噪、低光性能等。这些组可以具有各种尺寸,例如 2x2(四拜耳)或 3x3(九拜耳)。此键指定了位于同一滤色器下的像素组的长和宽。如果设备具有 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能

  • 如果不支持 REMOSAIC_REPROCESSING,则此键将不存在,因为 RAW 图像将具有规则的拜耳图案。

如果设备不具有 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT

传感器上的滤色器排列方式;对于 Bayer 相机,表示传感器左上角 2x2 区域的颜色,按读取顺序排列;对于 MONOCHROME 相机,表示其捕获的光谱。

类型:byte (acamera_metadata_enum_android_sensor_info_color_filter_arrangement_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_SENSOR_INFO_END
ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE

此相机设备支持的 ACAMERA_SENSOR_EXPOSURE_TIME 图像曝光时间范围。

另请参阅: ACAMERA_SENSOR_EXPOSURE_TIME

类型:int64[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED

此相机设备输出的 RAW 图像是否经过镜头阴影校正。

类型:byte (acamera_metadata_enum_android_sensor_info_lens_shading_applied_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果为 true,相机设备生成的 RAW 图像格式的所有图像都至少已应用了部分镜头阴影校正。如果为 false,则图像不会针对镜头阴影校正进行调整。有关 RAW 图像格式列表,请参阅 android.request.maxNumOutputRaw。

当为 true 时,lensShadingCorrectionMap 键的值可能仍大于 1.0,并且这些值需要应用于任何捕获的 RAW 帧,以使其与 YUVJPEG 图像等已处理缓冲区的阴影校正相匹配。例如,当硬件对 RAW 数据应用一些基本的固定镜头阴影校正,并在去马赛克后在相机处理管道中动态进行额外校正时,可能会发生这种情况。

对于所有不报告此信息的设备,此键将为 null。具有 RAW 功能的设备始终会在此键中报告此信息。

ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION

此相机设备支持的 ACAMERA_SENSOR_FRAME_DURATION 的最大可能帧持续时间(最小帧率)。

另请参阅: ACAMERA_SENSOR_FRAME_DURATION

类型:int64

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

尝试使用超出最大值的帧持续时间将导致帧持续时间被裁剪到最大值。有关帧持续时间的完整定义,请参阅该控件。

有关最小帧持续时间值,请参阅 ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS

ACAMERA_SENSOR_INFO_PHYSICAL_SIZE

完整像素阵列的物理尺寸。

类型:float[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是由 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 定义的传感器像素阵列的物理尺寸。

另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE

ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE

完整像素阵列的尺寸,可能包含黑色校准像素。

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

图像传感器完整像素阵列的像素计数,其覆盖 ACAMERA_SENSOR_INFO_PHYSICAL_SIZE 区域。这表示此传感器生成的原始缓冲区的完整像素尺寸。

如果相机设备支持原始传感器格式,则此值或 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZEACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中列出的原始输出格式的最大尺寸(这取决于图像传感器是否返回包含不属于活动阵列区域的像素的缓冲区,用于黑电平校准或其他目的)。

完整像素阵列的某些部分可能不会接收场景的光线,或者处于非活动状态。ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 键定义了将包含在处理后的图像格式中的活动像素矩形。

另请参阅: ACAMERA_SENSOR_INFO_PHYSICAL_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION

当传感器以最大分辨率模式运行时,完整像素阵列的尺寸,可能包含黑色校准像素。类似于 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时。

另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

图像传感器完整像素阵列的像素计数,覆盖 ACAMERA_SENSOR_INFO_PHYSICAL_SIZE 区域。这表示此传感器在最大分辨率模式下运行时生成的原始缓冲区的完整像素尺寸。也就是说,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时。此键仅适用于宣传 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的设备,或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备。

另请参阅: ACAMERA_SENSOR_INFO_PHYSICAL_SIZE 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

应用任何几何畸变校正之前,图像传感器中对应活动像素的区域。

类型:int32[4]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这是表示传感器活动区域大小(即实际接收场景光线的区域)的矩形,在应用任何几何校正之前,应视为任何原始格式的活动区域矩形。与原始处理关联的所有元数据(例如镜头阴影校正图和径向畸变场)都将此矩形的顶部、左侧视为原点 (0,0)。

此区域的大小决定了图像传感器在应用几何畸变校正之前可能包含的最大视野和最大像素数。后畸变校正图像的有效最大像素尺寸由 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 字段给出,而后畸变校正图像的有效最大视野可以通过将几何畸变校正字段应用于此矩形并裁剪到 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 中给出的矩形来计算。

例如,要计算处理后的 YUV 输出图像中像素 (x,y) 的位置,该图像的尺寸在 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 中给出,已知原始像素阵列中像素 (x', y') 的位置,其尺寸在 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 中给出:

  1. 选择原始缓冲区中 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 中给出的活动阵列区域内的像素 (x', y'),否则此像素将被视为在视野之外,并且不会显示在处理后的输出图像中。
  2. 应用几何畸变校正以获得校正后的像素坐标 (x_i, y_i)。应用几何校正元数据时,请注意原始缓冲区的元数据是相对于 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 矩形的顶部、左侧定义的。
  3. 如果得到的校正后的像素坐标在 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 中给定的区域内,则此像素在处理后的输出图像缓冲区中的位置是 (x_i - activeArray.left, y_i - activeArray.top),其中该缓冲区的顶部、左侧坐标被视为 (0, 0)。

因此,对于传感器上像素 x',y' = (25, 25),其中 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 是 (100,100),ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 是 (10, 10, 100, 100),ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 是 (20, 20, 80, 80),并且几何畸变校正不改变像素坐标,在像素坐标中选择的最终像素将是相对于 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 中给出的尺寸的原始缓冲区的顶部、左侧的 x,y = (25, 25),并且将是相对于 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 中给出的尺寸的后处理 YUV 输出缓冲区的顶部、左侧的 (5, 5)。

目前支持的用于校正几何畸变的字段有

  1. ACAMERA_LENS_DISTORTION

如果相机设备不支持几何畸变校正,或者所有几何畸变字段都无效,则此矩形将与 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 中给出的后畸变校正矩形相同。

此矩形相对于完整像素阵列定义;(0,0) 是完整像素阵列的左上角,完整像素阵列的大小由 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 给出。

预校正活动阵列可能小于完整像素阵列,因为完整阵列可能包含黑色校准像素或其他非活动区域。

数据表示为 int[4],映射到 (left, top, width, height)

另请参阅: ACAMERA_LENS_DISTORTION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE

ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION

当传感器以最大分辨率模式运行时,应用任何几何畸变校正之前,图像传感器中对应活动像素的区域。此键必须仅在 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,才用于裁剪/测光区域。

另请参阅: ACAMERA_SENSOR_PIXEL_MODE

类型:int32[4]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

类似于 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,当 ACAMERA_SENSOR_PIXEL_MODE 设置为 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时。此键仅适用于宣传 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的设备,或 CameraCharacteristics::getAvailableCaptureRequestKeys 列出 ACAMERA_SENSOR_PIXEL_MODE 的设备。

数据表示为 int[4],映射到 (left, top, width, height)

另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_PIXEL_MODE

ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE

此相机设备支持的 ACAMERA_SENSOR_SENSITIVITY 敏感度范围。

另请参阅: ACAMERA_SENSOR_SENSITIVITY

类型:int32[2]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这些值是标准 ISO 敏感度值,如 ISO 12232:2006 中定义。

ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE

传感器捕获开始时间戳的时间基准源。

类型:byte (acamera_metadata_enum_android_sensor_info_timestamp_source_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

提供的捕获时间戳始终以纳秒为单位且是单调递增的,但可能并非基于可以与其他系统时间源进行比较的时间源。

此特性定义了时间戳的来源,因此也定义了它们是否可以与其他系统时间源/时间戳进行比较。

ACAMERA_SENSOR_INFO_WHITE_LEVEL

传感器输出的最大原始值。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这指定了传感器原始样本值的完全饱和编码级别。这通常是由于传感器变得高度非线性或剪裁引起的。每个通道的最小值由 ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 键中的偏移量指定。

白电平通常由传感器位深(预计 8-14 位)或传感器响应变得过于非线性而无法使用时的点决定。默认值是 16 位原始样本的最大可表示值 (2^16 - 1)。

捕获图像的白电平值可能因不同的捕获设置(例如 ACAMERA_SENSOR_SENSITIVITY)而异。此键表示对此类情况的粗略近似值。当相机设备支持时,建议使用 ACAMERA_SENSOR_DYNAMIC_WHITE_LEVEL 进行捕获,这样可以提供更准确的白电平值。

另请参阅: ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 另请参阅: ACAMERA_SENSOR_DYNAMIC_WHITE_LEVEL 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_SENSOR_MAX_ANALOG_SENSITIVITY

纯粹通过模拟增益实现的最高敏感度。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

对于小于或等于此值的 ACAMERA_SENSOR_SENSITIVITY 值,所有应用的增益必须是模拟增益。对于高于此值的值,应用的增益可以是模拟和数字增益的混合。

另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_SENSOR_NEUTRAL_COLOR_POINT

捕获时本地传感器颜色空间中的估计相机中性颜色点。

类型:rational[3]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

此值以本地传感器颜色空间中的 RGB 值编码给出中性颜色点。中性颜色点表示当前估计的场景照明白点。在处理原始传感器数据时,可用于在提供的颜色转换之间进行插值。

值的顺序为 R、G、B;其中 R 在最低索引处。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

ACAMERA_SENSOR_NOISE_PROFILE

每个 CFA 马赛克通道的噪声模型系数。

类型:double[2*CFA Channels]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

此键包含对应于传感器放大 (S) 和传感器读取噪声 (O) 的每个 CFA 通道的两个噪声模型系数。这些以每通道对的形式给出,顺序与 CFA 布局键列出的通道相同(参见 ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT)。这表示为 Pair 数组,其中索引 n 处的 Pair 的第一个成员是第 n 个 CFA 颜色通道的 S 系数,第二个成员是 O 系数。

这些系数用于两参数噪声模型,以描述每个 CFA 通道图像中存在的噪声量。此处使用的噪声模型为

N(x) = sqrt(Sx + O)

其中 x 表示 CFA 通道记录的信号,归一化到范围 [0, 1],S 和 O 是该通道的噪声模型系数。

有关噪声模型的更详细描述,请参阅 Adobe DNG 规范中的 NoiseProfile 标签。

对于 MONOCHROME 相机,只有一个颜色通道。因此,噪声模型系数将只包含一个 S 和一个 O。

另请参阅: ACAMERA_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT

ACAMERA_SENSOR_OPTICAL_BLACK_REGIONS

表示传感器光学屏蔽黑色像素区域的互不相交矩形列表。

类型:int32[4*num_regions]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

在大多数相机传感器中,活动阵列被一些光学屏蔽的像素区域包围。通过阻挡光线,这些像素为活动阵列区域的黑电平补偿提供了可靠的黑色参考。

如果相机设备能够在输出原始图像中读出这些黑色像素,此键提供了一个互不相交的矩形列表,指定了光学屏蔽(带有金属屏蔽)的黑色像素区域。与 ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 报告的固定黑电平值相比,此键可以为应用程序提供一种更准确的方法来计算每个捕获的原始图像的黑电平。

当报告此键时,ACAMERA_SENSOR_DYNAMIC_BLACK_LEVELACAMERA_SENSOR_DYNAMIC_WHITE_LEVEL 也将报告。

数据表示为 int[4],映射到 (left, top, width, height)

另请参阅: ACAMERA_SENSOR_BLACK_LEVEL_PATTERN 另请参阅: ACAMERA_SENSOR_DYNAMIC_BLACK_LEVEL 另请参阅: ACAMERA_SENSOR_DYNAMIC_WHITE_LEVEL

ACAMERA_SENSOR_ORIENTATION

输出图像需要顺时针旋转以使其在设备屏幕的原生方向上变为直立状态的角度。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

还定义了卷帘快门读取的方向,在传感器的坐标系统中,方向是从上到下。

从 Android API 级别 32 开始,在包含逻辑相机的可折叠设备上通过 CameraCharacteristics::get 查询方向的相机客户端可以接收一个可能根据设备/折叠状态动态更改的值。建议客户端不要缓存或存储此类逻辑传感器的方向值。如果不想重复查询 CameraCharacteristics,客户端还可以访问 DeviceStateSensorOrientationMap 中从设备状态到传感器方向的整个映射。请注意,CameraCharacteristics 中动态更改的传感器方向值并不是建立每帧方向的最佳方式。想要知道特定捕获帧的传感器方向的客户端应从相应的捕获结果中查询 ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID,并检查相应的物理相机方向。

Native 相机客户端必须查询 ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS 以获取设备状态与相机传感器方向之间的映射。此代码路径不支持传感器方向的动态更新。

另请参阅: ACAMERA_INFO_DEVICE_STATE_ORIENTATIONS 另请参阅: ACAMERA_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID

ACAMERA_SENSOR_PIXEL_MODE

在最大分辨率模式和默认模式之间切换传感器像素模式。

类型:byte (acamera_metadata_enum_android_sensor_pixel_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

此键控制相机传感器是否在 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 模式下运行。默认情况下,所有相机设备都在 CameraMetadata::SENSOR_PIXEL_MODE_DEFAULT 模式下运行。在 CameraMetadata::SENSOR_PIXEL_MODE_DEFAULT 模式下运行时,传感器通常会执行像素合并以改善低光性能、降噪等。然而,在 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 模式下,传感器通常在未合并模式下运行,从而允许更大的图像尺寸。CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 模式下支持的流配置也与 CameraMetadata::SENSOR_PIXEL_MODE_DEFAULT 模式下的不同。可以通过 CameraCharacteristics::get 并使用 CameraCharacteristics::SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION 进行查询。除非两个 StreamConfigurationMap 都报告,否则 android.scaler.streamConfigurationMapMaximumResolutionandroid.scaler.streamConfigurationMap 的输出不得在同一 CaptureRequest 中混合使用。换句话说,这些输出是互斥的。对于重新处理请求,不需要设置此键。支持 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能的设备将存在此键。可能也会存在于不支持上述功能的设备上。在这种情况下

  • android.scaler.mandatoryMaximumResolutionStreamCombinations 中列出的强制流组合将不适用。
  • Bayer 模式的
    RAW 
    当选择 CameraMetadata::SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION 时,流的拜耳图案将是 ACAMERA_SENSOR_INFO_BINNING_FACTOR 中列出的。
  • 以下键将始终存在
    • android.scaler.streamConfigurationMapMaximumResolution
    • ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION
    • ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION
    • ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION

另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_INFO_BINNING_FACTOR 另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE_MAXIMUM_RESOLUTION 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE_MAXIMUM_RESOLUTION

ACAMERA_SENSOR_RAW_BINNING_FACTOR_USED

请求的 RAW 图像是否使用由 ACAMERA_SENSOR_INFO_BINNING_FACTOR 描述的拜耳图案。

另请参阅: ACAMERA_SENSOR_INFO_BINNING_FACTOR

类型:byte (acamera_metadata_enum_android_sensor_raw_binning_factor_used_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

此键仅适用于宣传 CameraMetadata::REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR 功能并同时宣传 REMOSAIC_REPROCESSING 功能的设备。在所有其他设备上,RAW 目标将具有规则的拜耳图案。

ACAMERA_SENSOR_REFERENCE_ILLUMINANT1

计算 ACAMERA_SENSOR_COLOR_TRANSFORM1ACAMERA_SENSOR_CALIBRATION_TRANSFORM1ACAMERA_SENSOR_FORWARD_MATRIX1 矩阵时用作场景光源的标准参考光源。

另请参阅: ACAMERA_SENSOR_CALIBRATION_TRANSFORM1 另请参阅: ACAMERA_SENSOR_COLOR_TRANSFORM1 另请参阅: ACAMERA_SENSOR_FORWARD_MATRIX1

类型:byte (acamera_metadata_enum_android_sensor_reference_illuminant1_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此键中的值与 EXIF LightSource 标签定义的值相对应。这些光源是常用于校准相机设备的标准光源。

如果此键存在,则 ACAMERA_SENSOR_COLOR_TRANSFORM1ACAMERA_SENSOR_CALIBRATION_TRANSFORM1ACAMERA_SENSOR_FORWARD_MATRIX1 也将存在。

某些设备可能会选择提供第二组校准信息以提高质量,包括 ACAMERA_SENSOR_REFERENCE_ILLUMINANT2 及其相应的矩阵。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_CALIBRATION_TRANSFORM1 另请参阅: ACAMERA_SENSOR_COLOR_TRANSFORM1 另请参阅: ACAMERA_SENSOR_FORWARD_MATRIX1 另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT2

ACAMERA_SENSOR_REFERENCE_ILLUMINANT2

计算 ACAMERA_SENSOR_COLOR_TRANSFORM2ACAMERA_SENSOR_CALIBRATION_TRANSFORM2ACAMERA_SENSOR_FORWARD_MATRIX2 矩阵时用作场景光源的标准参考光源。

另请参阅: ACAMERA_SENSOR_CALIBRATION_TRANSFORM2 另请参阅: ACAMERA_SENSOR_COLOR_TRANSFORM2 另请参阅: ACAMERA_SENSOR_FORWARD_MATRIX2

类型:byte

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

更多详细信息,请参阅 ACAMERA_SENSOR_REFERENCE_ILLUMINANT1

如果此键存在,则 ACAMERA_SENSOR_COLOR_TRANSFORM2ACAMERA_SENSOR_CALIBRATION_TRANSFORM2ACAMERA_SENSOR_FORWARD_MATRIX2 也将存在。

从 Android Q 开始,即使相机设备具有 RAW 功能,单色相机也不会出现此键。

另请参阅: ACAMERA_SENSOR_CALIBRATION_TRANSFORM2 另请参阅: ACAMERA_SENSOR_COLOR_TRANSFORM2 另请参阅: ACAMERA_SENSOR_FORWARD_MATRIX2 另请参阅: ACAMERA_SENSOR_REFERENCE_ILLUMINANT1

ACAMERA_SENSOR_ROLLING_SHUTTER_SKEW

图像传感器第一行开始曝光到图像传感器最后一行的下一行开始曝光之间的持续时间。

类型:int64

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

这是第一行和(最后一行+1)行曝光开始时间之间的曝光时间偏差。第一行和最后一行是 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 内的第一行和最后一行。

对于使用卷帘快门的典型相机传感器,这也等同于帧读取时间。

如果由于当前的输出目标分辨率,图像传感器正在以 binning 或裁剪模式运行,则此偏差可能比曝光时间更大,例如,因为它基于完整阵列,即使只读出部分阵列。请务必按比例调整该值,以覆盖您关心的输出实际使用的传感器部分。因此,如果您的输出覆盖了高度为 H 的活动阵列的 N 行,请将此值乘以 N/H 以获得该视口的总偏差。

注意:在 Android 11 之前,此字段被描述为测量从图像传感器的第一行到最后一行的持续时间,这与卷帘快门传感器的帧读取时间不相等。实现通常报告后者的值,因此为了解决不一致性,描述已更新为从(第一行,最后一行+1)行曝光开始计算。

另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE

ACAMERA_SENSOR_SENSITIVITY

处理前应用于传感器数据的增益量。

类型:int32

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

敏感度是标准 ISO 敏感度值,如 ISO 12232:2006 中定义。

敏感度必须在 ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE 范围内,如果小于 ACAMERA_SENSOR_MAX_ANALOG_SENSITIVITY,则相机设备保证仅使用模拟放大来应用增益。

如果相机设备无法应用完全请求的敏感度,它会将其增益降低到最接近的支持值。最终使用的敏感度将在输出捕获结果中提供。

此控制仅在 ACAMERA_CONTROL_AE_MODEACAMERA_CONTROL_MODE 设置为 OFF 时有效;否则自动曝光算法将覆盖此值。

请注意,对于支持 postRawSensitivityBoost 的设备,应用于最终处理图像的总敏感度是 ACAMERA_SENSOR_SENSITIVITYACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST 的组合。如果应用程序使用自动请求的上次捕获结果中的传感器敏感度进行手动请求,为了在输出图像中实现相同的亮度,应用程序也应设置 postRawSensitivityBoost。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_MODE 另请参阅: ACAMERA_CONTROL_POST_RAW_SENSITIVITY_BOOST 另请参阅: ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE 另请参阅: ACAMERA_SENSOR_MAX_ANALOG_SENSITIVITY 另请参阅: ACAMERA_SENSOR_SENSITIVITY

ACAMERA_SENSOR_TEST_PATTERN_DATA

ACAMERA_SENSOR_TEST_PATTERN_MODE 为 SOLID_COLOR 时提供测试图案的像素 [R, G_even, G_odd, B]

另请参阅: ACAMERA_SENSOR_TEST_PATTERN_MODE

类型:int32[4]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

每个颜色通道都被视为一个无符号 32 位整数。然后相机设备使用与其 Bayer 原始传感器输出中的位数相对应的最高有效 X 位。

例如,具有 RAW10 Bayer 输出的传感器将使用每个颜色通道的 10 个最高有效位。

ACAMERA_SENSOR_TEST_PATTERN_MODE

启用后,传感器发送测试图案而不是进行真实的相机曝光。

类型:int32 (acamera_metadata_enum_android_sensor_test_pattern_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

启用测试图案后,ACAMERA_SENSOR_* 指定的所有手动传感器控制将被忽略。所有其他控制应正常工作。

例如,如果启用手动闪光,闪光触发仍应发生(且测试图案保持不变,因为闪光实际上不会影响它)。

默认为 OFF。

ACAMERA_SENSOR_TIMESTAMP

图像传感器活动阵列第一行开始曝光的时间,以纳秒为单位。

类型:int64

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

时间戳也包含在为同一捕获生成的所有图像缓冲区中,并且在所有输出上将相同。

ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE == UNKNOWN 时,时间戳测量自一个未指定起始点以来经过的时间,并且是单调递增的。它们可以与同一相机设备的其他捕获的时间戳进行比较,但不保证与其他任何时间源可比。

ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE == REALTIME 时,时间戳衡量的时间与 SystemClock::elapsedRealtimeNanos 处于相同的时间基准,并且可以与其他使用该基准的子系统的时间戳进行比较。

对于重新处理,时间戳将与输入图像的曝光开始时间匹配,即用于创建重新处理捕获请求的 TotalCaptureResult 中的时间戳

另请参阅: ACAMERA_SENSOR_INFO_TIMESTAMP_SOURCE

ACAMERA_SHADING_AVAILABLE_MODES

此相机设备支持的 ACAMERA_SHADING_MODE 的镜头阴影模式列表。

另请参阅: ACAMERA_SHADING_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

此列表包含可为相机设备设置的镜头阴影模式。支持 MANUAL_POST_PROCESSING 功能的相机设备将始终列出 OFF 和 FAST 模式。这包括所有 FULL 级别设备。LEGACY 设备将始终仅支持 FAST 模式。

ACAMERA_SHADING_END
ACAMERA_SHADING_MODE

应用于图像数据的镜头阴影校正质量。

类型:byte (acamera_metadata_enum_android_shading_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

设置为 OFF 模式时,相机设备将不应用镜头阴影校正,并且如果 ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE == ON,则将提供一个恒等镜头阴影图数据。例如,对于大小为 [ 4, 3 ] 的镜头阴影图,此情况下的输出 android.statistics.lensShadingCorrectionMap 将是如下所示的恒等图

[ 1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
 1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
 1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
 1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
 1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0,
 1.0, 1.0, 1.0, 1.0,  1.0, 1.0, 1.0, 1.0 ]

设置为其他模式时,相机设备将应用镜头阴影校正。应用可以通过将 ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE 设置为 ON 来请求镜头阴影图数据,然后相机设备将在 android.statistics.lensShadingCorrectionMap 中提供镜头阴影图数据;返回的阴影图数据将是相机设备为此捕获请求应用的阴影图数据。

阴影图数据可能取决于自动曝光 (AE) 和 AWB 统计信息,因此图数据的可靠性可能会受到 AE 和 AWB 算法的影响。当 AE 和 AWB 处于 AUTO 模式(ACAMERA_CONTROL_AE_MODE != OFFACAMERA_CONTROL_AWB_MODE != OFF)时,为了获得最佳结果,建议应用在 AE 和 AWB 收敛后才使用返回的阴影图数据。

另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_AWB_MODE 另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE

ACAMERA_STATISTICS_END
ACAMERA_STATISTICS_FACE_DETECT_MODE

人脸检测单元的工作模式。

类型:byte (acamera_metadata_enum_android_statistics_face_detect_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

是否启用人脸检测,以及是只输出基本字段还是输出全部字段。

ACAMERA_STATISTICS_FACE_IDS

检测到的人脸的唯一 ID 列表。

类型:int32[n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

每个检测到的人脸都被赋予一个唯一的 ID,该 ID 在相机设备可见范围内始终有效。离开视野后又返回的人脸可能会被分配新的 ID。

仅在 ACAMERA_STATISTICS_FACE_DETECT_MODE == FULL 时可用

另请参阅: ACAMERA_STATISTICS_FACE_DETECT_MODE

ACAMERA_STATISTICS_FACE_LANDMARKS

检测到的人脸的标记点列表。

类型:int32[n*6]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

对于不支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系始终遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的坐标系,其中 (0, 0) 是活动区域的左上角像素。

对于支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系取决于设置的模式。当失真校正模式为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是预校正活动区域的左上角像素。当失真校正模式不为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是活动区域的左上角像素。

仅在 ACAMERA_STATISTICS_FACE_DETECT_MODE == FULL 时可用。

从 API 级别 30 开始,activeArraySize 或 preCorrectionActiveArraySize 的坐标系用于表示 post-zoomRatio 视野,而不是 pre-zoomRatio 视野。这意味着,如果人脸和相机设备的相对位置不变,则当通过增加 ACAMERA_CONTROL_ZOOM_RATIO 进行放大时,人脸标记点会离 activeArray 或 preCorrectionActiveArray 的中心更远。如果 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0(默认值),则人脸标记点坐标不会随 ACAMERA_SCALER_CROP_REGION 的变化而改变。有关详细信息,请参阅 ACAMERA_CONTROL_ZOOM_RATIO。是否使用 activeArraySize 或 preCorrectionActiveArraySize 仍取决于失真校正模式。

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_DISTORTION_CORRECTION_MODE 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_STATISTICS_FACE_DETECT_MODE

ACAMERA_STATISTICS_FACE_RECTANGLES

检测到的人脸的边界矩形列表。

类型:int32[n*4]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

对于不支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系始终遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 的坐标系,其中 (0, 0) 是活动区域的左上角像素。

对于支持 ACAMERA_DISTORTION_CORRECTION_MODE 控制的设备,坐标系取决于设置的模式。当失真校正模式为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是预校正活动区域的左上角像素。当失真校正模式不为 OFF 时,坐标系遵循 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE,其中 (0, 0) 是活动区域的左上角像素。

仅在 ACAMERA_STATISTICS_FACE_DETECT_MODE != OFF 时可用。

从 API 级别 30 开始,activeArraySize 或 preCorrectionActiveArraySize 的坐标系用于表示 post-zoomRatio 视野,而不是 pre-zoomRatio 视野。这意味着,如果人脸和相机设备的相对位置不变,则当通过增加 ACAMERA_CONTROL_ZOOM_RATIO 进行放大时,人脸矩形会变大并离 activeArray 或 preCorrectionActiveArray 的中心更远。如果 ACAMERA_CONTROL_ZOOM_RATIO 设置为 1.0(默认值),则人脸矩形不会随 ACAMERA_SCALER_CROP_REGION 的变化而改变。有关详细信息,请参阅 ACAMERA_CONTROL_ZOOM_RATIO。是否使用 activeArraySize 或 preCorrectionActiveArraySize 仍取决于失真校正模式。

数据表示为 int[4],映射到 (left, top, right, bottom)

另请参阅: ACAMERA_CONTROL_ZOOM_RATIO 另请参阅: ACAMERA_DISTORTION_CORRECTION_MODE 另请参阅: ACAMERA_SCALER_CROP_REGION 另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_STATISTICS_FACE_DETECT_MODE

ACAMERA_STATISTICS_FACE_SCORES

检测到的人脸的面部置信度评分列表

类型:byte[n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

仅在 ACAMERA_STATISTICS_FACE_DETECT_MODE != OFF 时可用。

另请参阅: ACAMERA_STATISTICS_FACE_DETECT_MODE

ACAMERA_STATISTICS_HOT_PIXEL_MAP

传感器上热/缺陷像素的 (x, y) 坐标列表。

类型:int32[2*n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

坐标 (x, y) 必须位于 (0, 0)(width - 1, height - 1)(含)之间,分别表示像素数组的左上角和右下角。宽度和高度尺寸在 ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE 中给出。这可能包括位于 ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 给定的活动阵列边界之外的热像素。

另请参阅: ACAMERA_SENSOR_INFO_ACTIVE_ARRAY_SIZE 另请参阅: ACAMERA_SENSOR_INFO_PIXEL_ARRAY_SIZE

ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE

热像素图生成的运行模式。

类型:byte (acamera_metadata_enum_android_statistics_hot_pixel_map_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

如果设置为 true,将在 ACAMERA_STATISTICS_HOT_PIXEL_MAP 中返回热像素图。如果设置为 false,则不会返回热像素图。

另请参阅: ACAMERA_STATISTICS_HOT_PIXEL_MAP

ACAMERA_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES

此相机设备支持的 ACAMERA_STATISTICS_FACE_DETECT_MODE 的人脸检测模式列表。

另请参阅: ACAMERA_STATISTICS_FACE_DETECT_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

OFF 始终受支持。

ACAMERA_STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES

此相机设备支持的 ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE 的热像素图输出模式列表。

另请参阅: ACAMERA_STATISTICS_HOT_PIXEL_MAP_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果此相机设备没有可用的热像素图输出,则此键将仅包含 false

对于具有 RAW 功能的设备,ON 始终受支持。

ACAMERA_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES

此相机设备支持的 ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE 的镜头阴影图输出模式列表。

另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果此相机设备没有可用的镜头阴影图输出,则此键将仅包含 OFF。

对于具有 RAW 功能的设备,ON 始终受支持。LEGACY 模式设备将始终仅支持 OFF。

ACAMERA_STATISTICS_INFO_AVAILABLE_OIS_DATA_MODES

此相机设备支持的 ACAMERA_STATISTICS_OIS_DATA_MODE 的 OIS 数据输出模式列表。

另请参阅: ACAMERA_STATISTICS_OIS_DATA_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果此相机设备没有可用的 OIS 数据输出,则此键将仅包含 OFF。

ACAMERA_STATISTICS_INFO_END
ACAMERA_STATISTICS_INFO_MAX_FACE_COUNT

可同时检测到的最大人脸数量。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

ACAMERA_STATISTICS_LENS_INTRINSIC_SAMPLES

帧内镜头固有参数数组。

类型:float[5*n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

单个数组条目的数据布局和内容与 ACAMERA_LENS_INTRINSIC_CALIBRATION 匹配。

另请参阅: ACAMERA_LENS_INTRINSIC_CALIBRATION

ACAMERA_STATISTICS_LENS_INTRINSIC_TIMESTAMPS

镜头固有参数样本的时间戳数组,单位为纳秒。

类型:int64[n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

该数组包含镜头固有参数样本的时间戳。时间戳与 ACAMERA_SENSOR_TIMESTAMP 处于相同的时间基准并可与之比较。

另请参阅: ACAMERA_SENSOR_TIMESTAMP

ACAMERA_STATISTICS_LENS_SHADING_MAP

阴影图是一种低分辨率浮点图,列出了用于校正每个 Bayer 颜色通道 RAW 图像数据的暗角和颜色阴影的系数。

类型:float[4*n*m]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

此处提供的映射是相机设备用于校正输出非 RAW 图像的颜色阴影和暗角的同一映射。

当 RAW 输出图像未应用镜头阴影校正 (ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED == false) 时,此映射是完整的镜头阴影校正映射;当 RAW 输出图像已应用部分镜头阴影校正 (ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED == true) 时,此映射报告的是需要应用的剩余镜头阴影校正映射,以获得与相机设备对非 RAW 格式输出匹配的阴影校正图像。

对于完整的阴影校正映射,图像中阴影最少的区域的增益因子为 1;所有其他区域的增益都大于 1。

当 ACAMERA_COLOR_CORRECTION_MODE = TRANSFORM_MATRIX 时,映射将考虑颜色校正设置。

阴影图适用于整个活动像素阵列,并且不受请求中指定的裁剪区域的影响。每个阴影图条目都是传感器上特定像素上的阴影补偿图的值。具体而言,对于分辨率为 (N x M) 的阴影图和大小为 (W x H) 的活动像素阵列,阴影图条目 (x,y) ϵ (0 ... N-1, 0 ... M-1) 是颜色通道在像素 ( ((W-1)/(N-1)) * x, ((H-1)/(M-1)) * y) 上的阴影图的值。假定该映射在样本点之间采用双线性插值。

对于 Bayer 相机,通道顺序为 [R, Geven, Godd, B],其中 Geven 是 Bayer 模式偶数行的绿色通道,Godd 是奇数行。阴影图以完全交错格式存储,其大小由相机静态元数据中的 ACAMERA_LENS_INFO_SHADING_MAP_SIZE 提供。

阴影图通常有大约 30-40 行和列,并且小于 64x64。

例如,对于定义为如下所示的 Bayer 相机的非常小的映射

ACAMERA_LENS_INFO_SHADING_MAP_SIZE = [ 4, 3 ]
ACAMERA_STATISTICS_LENS_SHADING_MAP =
[ 1.3, 1.2, 1.15, 1.2,  1.2, 1.2, 1.15, 1.2,
    1.1, 1.2, 1.2, 1.2,  1.3, 1.2, 1.3, 1.3,
  1.2, 1.2, 1.25, 1.1,  1.1, 1.1, 1.1, 1.0,
    1.0, 1.0, 1.0, 1.0,  1.2, 1.3, 1.25, 1.2,
  1.3, 1.2, 1.2, 1.3,   1.2, 1.15, 1.1, 1.2,
    1.2, 1.1, 1.0, 1.2,  1.3, 1.15, 1.2, 1.3 ]

每个通道的低分辨率缩放图图像(使用最近邻插值显示)如下所示

作为仅可视化用途,对全彩色图进行反转以恢复传感器捕获的灰色墙图像(使用双三次插值以获得视觉质量)得到如下结果

对于 MONOCHROME 相机,所有 2x2 通道必须具有相同的值。此类相机的阴影图示例如下所示

ACAMERA_LENS_INFO_SHADING_MAP_SIZE = [ 4, 3 ]
ACAMERA_STATISTICS_LENS_SHADING_MAP =
[ 1.3, 1.3, 1.3, 1.3,  1.2, 1.2, 1.2, 1.2,
    1.1, 1.1, 1.1, 1.1,  1.3, 1.3, 1.3, 1.3,
  1.2, 1.2, 1.2, 1.2,  1.1, 1.1, 1.1, 1.1,
    1.0, 1.0, 1.0, 1.0,  1.2, 1.2, 1.2, 1.2,
  1.3, 1.3, 1.3, 1.3,   1.2, 1.2, 1.2, 1.2,
    1.2, 1.2, 1.2, 1.2,  1.3, 1.3, 1.3, 1.3 ]

请注意,RAW 图像数据可能受到此映射中未报告的镜头阴影校正的影响。查询 ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED 可查看 RAW 图像数据是否已进行镜头阴影校正。如果 ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED 为 TRUE,则 RAW 图像数据已进行部分或全部镜头阴影校正。如果对 RAW 图像应用了完整的镜头阴影校正,则此键中报告的增益因子映射将包含所有 1.0 的增益。换句话说,此键中报告的映射是需要在 RAW 图像上应用的剩余镜头阴影,以获得没有镜头阴影伪影的图像。有关 RAW 图像格式列表,请参阅 android.request.maxNumOutputRaw。

另请参阅: ACAMERA_COLOR_CORRECTION_MODE 另请参阅: ACAMERA_LENS_INFO_SHADING_MAP_SIZE 另请参阅: ACAMERA_SENSOR_INFO_LENS_SHADING_APPLIED 另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP

ACAMERA_STATISTICS_LENS_SHADING_MAP_MODE

相机设备是否在输出结果元数据中输出镜头阴影图。

类型:byte (acamera_metadata_enum_android_statistics_lens_shading_map_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

设置为 ON 时,将在输出结果元数据中提供 ACAMERA_STATISTICS_LENS_SHADING_MAP。

对于具有 RAW 功能的设备,ON 始终受支持。

另请参阅: ACAMERA_STATISTICS_LENS_SHADING_MAP

ACAMERA_STATISTICS_OIS_DATA_MODE

一个控件,用于选择是否在输出结果元数据中包含光学防抖 (OIS) 位置信息。

类型:byte (acamera_metadata_enum_android_statistics_ois_data_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

由于光学图像防抖通常涉及比单个图像曝光持续时间快得多的运动,因此单个捕获结果可以包含多个 OIS 样本。例如,如果 OIS 报告以 200 Hz 工作,则以 30fps 工作的典型相机每个捕获结果可能有 6-7 个 OIS 样本。此信息可以与卷帘快门倾斜结合使用,以便在后处理算法中考虑图像曝光期间的镜头运动。

ACAMERA_STATISTICS_OIS_TIMESTAMPS

OIS 样本的时间戳数组,单位为纳秒。

类型:int64[n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

该数组包含 OIS 样本的时间戳。时间戳与 ACAMERA_SENSOR_TIMESTAMP 处于相同的时间基准并可与之比较。

另请参阅: ACAMERA_SENSOR_TIMESTAMP

ACAMERA_STATISTICS_OIS_X_SHIFTS

OIS 样本在 x 方向的偏移数组。

类型:float[n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

该数组包含基于 OIS 样本的 x 方向偏移量,单位为像素。正值表示在预校正活动阵列坐标系中从左到右的偏移。例如,如果在预校正活动阵列坐标中,光学中心为 (1000, 500),则偏移 (3, 0) 会将新的光学中心置于 (1003, 500)。

偏移数量必须与 ACAMERA_STATISTICS_OIS_TIMESTAMPS 中的时间戳数量匹配。

OIS 样本不受是否启用镜头失真校正的影响(在支持设备上)。它们始终在预校正活动阵列坐标中报告,因为 OIS 偏移的缩放取决于传感器上需要偏移的特定位置。

另请参阅: ACAMERA_STATISTICS_OIS_TIMESTAMPS

ACAMERA_STATISTICS_OIS_Y_SHIFTS

OIS 样本在 y 方向的偏移数组。

类型:float[n]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

该数组包含基于 OIS 样本的 y 方向偏移量,单位为像素。正值表示在预校正活动阵列坐标系中从上到下的偏移。例如,如果在活动阵列坐标中,光学中心为 (1000, 500),则偏移 (0, 5) 会将新的光学中心置于 (1000, 505)。

偏移数量必须与 ACAMERA_STATISTICS_OIS_TIMESTAMPS 中的时间戳数量匹配。

OIS 样本不受是否启用镜头失真校正的影响(在支持设备上)。它们始终在预校正活动阵列坐标中报告,因为 OIS 偏移的缩放取决于传感器上需要偏移的特定位置。

另请参阅: ACAMERA_STATISTICS_OIS_TIMESTAMPS

ACAMERA_STATISTICS_SCENE_FLICKER

相机设备估计的场景光照闪烁频率。

类型:byte (acamera_metadata_enum_android_statistics_scene_flicker_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

许多光源(例如大多数荧光灯)会以取决于当地公用事业电力标准的速率闪烁。自动曝光程序必须考虑这种闪烁,以避免捕获图像中出现伪影。相机设备使用此条目告诉应用场景照明频率是什么。

启用手动曝光控制时(ACAMERA_CONTROL_AE_MODE == OFFACAMERA_CONTROL_MODE == OFF),ACAMERA_CONTROL_AE_ANTIBANDING_MODE 不会执行防闪烁功能,应用可以通过查看此元数据字段来确保选择不会导致条带问题的曝光时间。有关详细信息,请参阅 ACAMERA_CONTROL_AE_ANTIBANDING_MODE。

如果没有闪烁照明迹象,则报告 NONE。

另请参阅: ACAMERA_CONTROL_AE_ANTIBANDING_MODE 另请参阅: ACAMERA_CONTROL_AE_MODE 另请参阅: ACAMERA_CONTROL_MODE

ACAMERA_SYNC_END
ACAMERA_SYNC_FRAME_NUMBER

与输出结果(元数据 + 缓冲区)完全同步的最后一个请求对应的帧号。

类型:int64 (acamera_metadata_enum_android_sync_frame_number_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata

当请求提交给相机设备时,控制通常会延迟几帧才能应用。相机设备可以选择通过实现管道并仔细提交定时良好的原子控制更新来考虑此延迟,或者它可以开始流式传输跨越多个帧边界的控制更改。

在后一种情况下,每当请求的设置相对于先前提交的请求发生更改时,整套更改可能需要多个帧持续时间才能完全生效。某些设置可能比其他设置更快生效(在更少的帧持续时间内)。

当一套控制更改正在传播时,此值将为 CONVERGING。

一旦完全已知一套控制更改已传播完成,并且相机设备已回读更新后的控制设置,此值将被设置为非负帧号(对应于结果已同步到的请求)。

较旧的相机设备实现可能无法检测何时已应用所有相机控件,并且将始终将此值设置为 UNKNOWN。

FULL 功能设备将始终将此值设置为与此结果对应的请求的帧号。

更多详情:

  • 每当请求与最后一个请求不同时,任何尚未返回的未来结果可能将此值设置为 CONVERGING(这可能包括相机设备尚未返回的任何正在进行的捕获,有关详细信息请参阅下面的管道注意事项)。
  • 提交一系列多个与前一个请求不同的请求(例如 r1、r2、r3 使得 r1 != r2 != r3)将新的同步帧移动到最后一个非重复请求(使用连续重复请求列表中最小的帧号)。
  • 如果此值已是非负值,则重复提交相同的请求不会将其更改为 CONVERGING。
  • 当此值变为非负值时,表示请求中的所有元数据控件均已应用,相机设备中的所有元数据控件均已回读到更新后的值(到结果中),并且与此结果对应的所有图形缓冲区也已同步到请求。

管道注意事项:

提交与先前提交的请求相比更新了控件的请求也可能使与当前正在进行的请求对应的所有结果的同步状态失效。

换句话说,此当前请求以及多达 ACAMERA_REQUEST_PIPELINE_MAX_DEPTH 个先前请求的结果可能将其 ACAMERA_SYNC_FRAME_NUMBER 更改为 CONVERGING。

另请参阅: ACAMERA_REQUEST_PIPELINE_MAX_DEPTH 另请参阅: ACAMERA_SYNC_FRAME_NUMBER

ACAMERA_SYNC_MAX_LATENCY

提交请求(与之前不同)后,在结果状态同步之前可能发生的最大帧数。

类型:int32 (acamera_metadata_enum_android_sync_max_latency_t)

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

这定义了要应用的新控制请求的帧号与所有控制都已应用的结果的帧号之间的最大距离(以元数据结果数计)。

换句话说,这充当了相机设备知道新提交的相机设置已在输出帧中应用的确定性上限。

ACAMERA_TONEMAP_AVAILABLE_TONE_MAP_MODES

此相机设备支持的 ACAMERA_TONEMAP_MODE 的色调映射模式列表。

另请参阅: ACAMERA_TONEMAP_MODE

类型:byte[n]

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

支持 MANUAL_POST_PROCESSING 功能的相机设备将始终至少包含以下模式组合之一

  • CONTRAST_CURVE、FAST 和 HIGH_QUALITY
  • GAMMA_VALUE、PRESET_CURVE、FAST 和 HIGH_QUALITY

这包括所有 FULL 级别设备。

ACAMERA_TONEMAP_CURVE_BLUE

ACAMERA_TONEMAP_MODE 为 CONTRAST_CURVE 时,用于蓝色通道的色调映射/对比度/伽马曲线。

另请参阅: ACAMERA_TONEMAP_MODE

类型:float[n*2]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

有关详细信息,请参阅 ACAMERA_TONEMAP_CURVE_RED。

另请参阅: ACAMERA_TONEMAP_CURVE_RED

ACAMERA_TONEMAP_CURVE_GREEN

ACAMERA_TONEMAP_MODE 为 CONTRAST_CURVE 时,用于绿色通道的色调映射/对比度/伽马曲线。

另请参阅: ACAMERA_TONEMAP_MODE

类型:float[n*2]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

有关详细信息,请参阅 ACAMERA_TONEMAP_CURVE_RED。

另请参阅: ACAMERA_TONEMAP_CURVE_RED

ACAMERA_TONEMAP_CURVE_RED

ACAMERA_TONEMAP_MODE 为 CONTRAST_CURVE 时,用于红色通道的色调映射/对比度/伽马曲线。

另请参阅: ACAMERA_TONEMAP_MODE

类型:float[n*2]

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

每个通道的曲线由控制点数组定义

ACAMERA_TONEMAP_CURVE_RED =
  [ P0in, P0out, P1in, P1out, P2in, P2out, P3in, P3out, ..., PNin, PNout ]
2 <= N <= ACAMERA_TONEMAP_MAX_CURVE_POINTS

这些点按 Pin 的增加顺序排序;需要将输入值 0.0 和 1.0 包含在列表中以定义完整的映射。对于控制点之间的输入值,相机设备必须在控制点之间进行线性插值。

每条曲线可以有独立数量的点,且点的数量可以小于最大值(即,请求不必总是提供点数量等于 ACAMERA_TONEMAP_MAX_CURVE_POINTS 的曲线)。

对于具有 MONOCHROME 功能的设备,所有三个通道必须具有相同的控制点集。

一些示例及其对应的图形映射;为简洁起见,这些示例仅指定红色通道且精度限制为 4 位数字。

线性映射

ACAMERA_TONEMAP_CURVE_RED = [ 0, 0, 1.0, 1.0 ]

反转映射

ACAMERA_TONEMAP_CURVE_RED = [ 0, 1.0, 1.0, 0 ]

伽马 1/2.2 映射,具有 16 个控制点

ACAMERA_TONEMAP_CURVE_RED = [
  0.0000, 0.0000, 0.0667, 0.2920, 0.1333, 0.4002, 0.2000, 0.4812,
  0.2667, 0.5484, 0.3333, 0.6069, 0.4000, 0.6594, 0.4667, 0.7072,
  0.5333, 0.7515, 0.6000, 0.7928, 0.6667, 0.8317, 0.7333, 0.8685,
  0.8000, 0.9035, 0.8667, 0.9370, 0.9333, 0.9691, 1.0000, 1.0000 ]

标准 sRGB 伽马映射,遵循 IEC 61966-2-1:1999,具有 16 个控制点

ACAMERA_TONEMAP_CURVE_RED = [
  0.0000, 0.0000, 0.0667, 0.2864, 0.1333, 0.4007, 0.2000, 0.4845,
  0.2667, 0.5532, 0.3333, 0.6125, 0.4000, 0.6652, 0.4667, 0.7130,
  0.5333, 0.7569, 0.6000, 0.7977, 0.6667, 0.8360, 0.7333, 0.8721,
  0.8000, 0.9063, 0.8667, 0.9389, 0.9333, 0.9701, 1.0000, 1.0000 ]

另请参阅: ACAMERA_TONEMAP_CURVE_RED 另请参阅: ACAMERA_TONEMAP_MAX_CURVE_POINTS

ACAMERA_TONEMAP_END
ACAMERA_TONEMAP_GAMMA

ACAMERA_TONEMAP_MODE 为 GAMMA_VALUE 时使用的色调映射曲线

另请参阅: ACAMERA_TONEMAP_MODE

类型:float

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

色调映射曲线将由以下公式定义

  • OUT = pow(IN, 1.0 / gamma)

其中 IN 和 OUT 是缩放到范围 [0.0, 1.0] 的输入像素值,pow 是幂函数,gamma 是此键指定的伽马值。

相同的曲线将应用于所有颜色通道。相机设备可能会将输入伽马值裁剪到其支持的范围。实际应用的值将在捕获结果中返回。

伽马值的有效范围在不同设备上有所不同,但保证 [1.0, 5.0] 范围内的值不会被裁剪。

ACAMERA_TONEMAP_MAX_CURVE_POINTS

可用于 android.tonemap.curve 的色调映射曲线支持的最大点数。

类型:int32

此标记可能出现在

  • 来自 ACameraManager_getCameraCharacteristics 的 ACameraMetadata

如果应用提供的实际点数(在 ACAMERA_TONEMAPCURVE_* 中)小于此最大值,则相机设备将使用线性插值将曲线重新采样到其内部表示。

结果元数据中的输出曲线可能与输入曲线的点数不同,并且将通过线性插值尽可能接近地表示实际使用的非线性/非全局变换。

ACAMERA_TONEMAP_MODE

高级全局对比度/伽马/色调映射控制。

类型:byte (acamera_metadata_enum_android_tonemap_mode_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

通过将 ACAMERA_TONEMAP_MODE 设置为 CONTRAST_CURVE 切换到应用定义的对比度曲线时,曲线按通道定义,包含一组 (in, out) 点,这些点指定了从输入高位深像素值到输出低位深值的映射。由于输入和输出的实际像素范围可能会因相机管道而异,因此值以归一化浮点数指定。

当 ACAMERA_TONEMAP_MODE 为 CONTRAST_CURVE 时,更复杂的颜色映射操作(例如 3D 颜色查找表、选择性色度增强或其他非线性颜色变换)将被禁用。

使用 FAST 或 HIGH_QUALITY 时,相机设备将在 android.tonemap.curve 中发出其自身的色调映射曲线。这些值始终可用,并尽可能接近实际使用的非线性/非全局变换。

如果使用 FAST 或 HIGH_QUALITY 中的相机设备提供的曲线发送带有 CONTRAST_CURVE 的请求,则图像的色调映射将大致相同。

另请参阅: ACAMERA_TONEMAP_MODE

ACAMERA_TONEMAP_PRESET_CURVE

ACAMERA_TONEMAP_MODE 为 PRESET_CURVE 时使用的色调映射曲线

另请参阅: ACAMERA_TONEMAP_MODE

类型:byte (acamera_metadata_enum_android_tonemap_preset_curve_t)

此标记可能出现在

  • 来自 ACameraCaptureSession_captureCallback_result 回调的 ACameraMetadata
  • ACaptureRequest

色调映射曲线将由指定的标准定义。

sRGB(由 16 个控制点近似)

Rec. 709(由 16 个控制点近似)

请注意,上述数字显示的是预设曲线的 16 点近似。相机设备可能对曲线应用不同的近似。

camera_status_t

camera/NdkCameraError.h 中声明
 camera_status_t

相机状态枚举类型。

属性
ACAMERA_ERROR_BASE
ACAMERA_ERROR_CAMERA_DEVICE

相机操作失败,相机设备遇到致命错误,需要重新打开才能再次使用。

ACAMERA_ERROR_CAMERA_DISABLED

由于设备策略,相机被禁用,无法打开。

ACAMERA_ERROR_CAMERA_DISCONNECTED

相机操作失败,因为相机设备已关闭,可能是因为优先级较高的客户端已获取相机设备的所有权。

ACAMERA_ERROR_CAMERA_IN_USE

相机设备正被另一个优先级较高的相机 API 客户端使用。

ACAMERA_ERROR_CAMERA_SERVICE

相机操作失败,相机服务遇到致命错误。

Android 设备可能需要关机并重启才能恢复相机功能,或者可能存在持久性硬件问题。

可以通过关闭 ACameraDevice 和 ACameraManager,然后从头开始尝试重新获取所有资源来进行恢复尝试。

ACAMERA_ERROR_INVALID_OPERATION

相机操作由于内部操作无效而失败。

这通常是由低级别问题引起的,重试可能会解决。

ACAMERA_ERROR_INVALID_PARAMETER

相机操作失败,因为传递给方法的参数无效。

ACAMERA_ERROR_MAX_CAMERA_IN_USE

已达到系统范围内打开相机或相机资源的数量限制,在关闭之前的实例之前,无法打开更多相机设备。

ACAMERA_ERROR_METADATA_NOT_FOUND

相机操作失败,因为在输入 ACameraMetadataACaptureRequest 中找不到请求的元数据标签。

ACAMERA_ERROR_NOT_ENOUGH_MEMORY

相机操作失败,因为内存不足。

ACAMERA_ERROR_PERMISSION_DENIED

应用没有打开相机的权限。

ACAMERA_ERROR_SESSION_CLOSED

ACameraCaptureSession 已关闭,无法执行 ACameraCaptureSession_close 以外的任何操作。

ACAMERA_ERROR_STREAM_CONFIGURE_FAIL

相机设备不支持应用在 ACameraDevice_createCaptureSessionACameraDevice_isSessionConfigurationSupported 中提供的流配置。

ACAMERA_ERROR_UNKNOWN

相机操作由于未指定原因而失败。

ACAMERA_ERROR_UNSUPPORTED_OPERATION

相机设备不支持该操作。

ACAMERA_OK

相机操作成功。

类型定义

ACameraCaptureFailure

声明于 camera/NdkCameraCaptureSession.h
struct ACameraCaptureFailure ACameraCaptureFailure

描述捕获失败的结构体。

ACameraCaptureSession

声明于 camera/NdkCameraCaptureSession.h
typedef__BEGIN_DECLS struct ACameraCaptureSession ACameraCaptureSession

ACameraCaptureSession 是一个不透明类型,用于管理相机设备的帧捕获。

可以使用 ACameraDevice_createCaptureSession 方法获取指针。

ACameraCaptureSession_captureCallback_bufferLost

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_captureCallback_bufferLost)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, ANativeWindow *window, int64_t frameNumber)

相机缓冲区丢失回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
request
相关的捕获请求。请注意,此指针指向应用发送的捕获请求的副本,因此地址与应用发送的地址不同,但内容会匹配。此请求将在此回调返回后立即由框架释放。
window
丢失的缓冲区将发送到的 ANativeWindow
frameNumber
丢失缓冲区的帧号。

ACameraCaptureSession_captureCallback_failed

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_captureCallback_failed)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, ACameraCaptureFailure *failure)

相机捕获失败回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
request
相关的捕获请求。请注意,此指针指向应用发送的捕获请求的副本,因此地址与应用发送的地址不同,但内容会匹配。此请求将在此回调返回后立即由框架释放。
failure
ACameraCaptureFailure 描述了捕获失败。内存由相机框架管理。此回调返回后,请勿访问此指针。

ACameraCaptureSession_captureCallback_result

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_captureCallback_result)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, const ACameraMetadata *result)

相机捕获进度/结果回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
request
相关的捕获请求。请注意,此指针指向应用发送的捕获请求的副本,因此地址与应用发送的地址不同,但内容会匹配。此请求将在此回调返回后立即由框架释放。
result
相机设备报告的捕获结果元数据。内存由相机框架管理。此回调返回后,请勿访问此指针。

ACameraCaptureSession_captureCallback_sequenceAbort

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_captureCallback_sequenceAbort)(void *context, ACameraCaptureSession *session, int sequenceId)

相机序列中止回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
sequenceId
中止序列的捕获序列 ID。

ACameraCaptureSession_captureCallback_sequenceEnd

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_captureCallback_sequenceEnd)(void *context, ACameraCaptureSession *session, int sequenceId, int64_t frameNumber)

相机序列结束回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
sequenceId
完成序列的捕获序列 ID。
frameNumber
此序列最后一帧的帧号。

ACameraCaptureSession_captureCallback_start

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_captureCallback_start)(void *context, ACameraCaptureSession *session, const ACaptureRequest *request, int64_t timestamp)

相机捕获开始回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
request
正在开始的捕获请求。请注意,此指针指向应用发送的捕获请求的副本,因此地址与应用发送的地址不同,但内容会匹配。此请求将在此回调返回后立即由框架释放。
timestamp
捕获开始时的时间戳。此时间戳将与 ACameraCaptureSession_captureCallbacks#onCaptureCompleted 回调中 ACameraMetadataACAMERA_SENSOR_TIMESTAMP 匹配。

ACameraCaptureSession_captureCallback_startV2

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_captureCallback_startV2)(void *context, ACameraCaptureSession *session, const ACaptureRequest *request, int64_t timestamp, int64_t frameNumber)

相机捕获开始回调函数的定义。

ACameraCaptureSession_captureCallbacks#onCaptureStarted 相同,只是它也包含捕获的帧号。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
request
正在开始的捕获请求。请注意,此指针指向应用发送的捕获请求的副本,因此地址与应用发送的地址不同,但内容会匹配。此请求将在此回调返回后立即由框架释放。
timestamp
捕获开始时的时间戳。此时间戳将与 ACameraCaptureSession_captureCallbacks#onCaptureCompleted 回调中 ACameraMetadataACAMERA_SENSOR_TIMESTAMP 匹配。
frameNumber
开始捕获的帧号

ACameraCaptureSession_captureCallbacks

声明于 camera/NdkCameraCaptureSession.h
struct ACameraCaptureSession_captureCallbacks ACameraCaptureSession_captureCallbacks

ACaptureCaptureSession_captureCallbacks 结构体,用于 ACameraCaptureSession_captureACameraCaptureSession_setRepeatingRequest

ACameraCaptureSession_captureCallbacksV2

声明于 camera/NdkCameraCaptureSession.h
struct ACameraCaptureSession_captureCallbacksV2 ACameraCaptureSession_captureCallbacksV2

此函数的功能与 ACameraCaptureSession_captureCallbacks 相同,但使用 captureCallback_startV2 回调而非 captureCallback_start,以支持检索帧编号。

ACameraCaptureSession_logicalCamera_captureCallback_failed

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_logicalCamera_captureCallback_failed)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, ALogicalCameraCaptureFailure *failure)

逻辑相机捕获失败回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
request
相关的捕获请求。请注意,此指针指向应用发送的捕获请求的副本,因此地址与应用发送的地址不同,但内容会匹配。此请求将在此回调返回后立即由框架释放。
failure
ALogicalCameraCaptureFailure 描述了捕获失败。内存由相机框架管理。此回调返回后,请勿访问此指针。

ACameraCaptureSession_logicalCamera_captureCallback_result

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_logicalCamera_captureCallback_result)(void *context, ACameraCaptureSession *session, ACaptureRequest *request, const ACameraMetadata *result, size_t physicalResultCount, const char **physicalCameraIds, const ACameraMetadata **physicalResults)

支持逻辑多相机的最终捕获结果回调函数的定义。

这与最终的 ACameraCaptureSession_captureCallback_result 具有相同的功能,并增加了在逻辑多相机中返回物理相机结果元数据的能力。

对于逻辑多相机,将使用底层物理相机的 ID 和结果元数据调用此函数,相应的捕获请求包含这些相机的目标。如果捕获请求不包含任何物理相机的特定目标,或者当前相机设备不是逻辑多相机,则 physicalResultCount 将为 0。

详情
参数
context
用户在 ACameraCaptureSession_captureCallbacks 中提供的可选应用上下文。
session
相关的相机捕获会话。
request
相关的捕获请求。请注意,此指针指向应用发送的捕获请求的副本,因此地址与应用发送的地址不同,但内容会匹配。此请求将在此回调返回后立即由框架释放。
result
相机设备报告的捕获结果元数据。内存由相机框架管理。此回调返回后,请勿访问此指针。
physicalResultCount
物理相机结果元数据的数量
physicalCameraIds
报告物理结果元数据的物理相机 ID 数组。
physicalResults
物理相机设备报告的捕获结果元数据数组。

ACameraCaptureSession_logicalCamera_captureCallbacks

声明于 camera/NdkCameraCaptureSession.h
struct ACameraCaptureSession_logicalCamera_captureCallbacks ACameraCaptureSession_logicalCamera_captureCallbacks

此函数的功能与 ACameraCaptureSession_captureCallbacks 相同,但使用 onLogicalCameraCaptureCompleted 回调而非 onCaptureCompleted,以支持逻辑多相机。

ACameraCaptureSession_logicalCamera_captureCallbacksV2

声明于 camera/NdkCameraCaptureSession.h
struct ACameraCaptureSession_logicalCamera_captureCallbacksV2 ACameraCaptureSession_logicalCamera_captureCallbacksV2

此函数的功能与 ACameraCaptureSession_logicalCamera_captureCallbacks 相同,但使用 captureCallback_startV2 回调而非 captureCallback_start,以支持检索帧编号。

ACameraCaptureSession_prepareCallback

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_prepareCallback)(void *context, ANativeWindow *window, ACameraCaptureSession *session)

相机捕获会话 onWindowPrepared 回调函数的定义。

当输出窗口 Surface 的缓冲区预分配完成时,将调用此回调。

ACameraCaptureSession_prepare 调用启动输出窗口的缓冲区预分配。在分配进行期间,不得在捕获请求中使用该输出。调用此回调后,提供的输出可用作捕获请求的目标。如果在预分配过程中发生错误(例如,内存不足),即使某些缓冲区可能未能成功预分配,此回调仍会在遇到错误后调用。

在 API 34 中引入。

详情
参数
context
ACameraCaptureSession_setWindowPreparedCallback 方法调用中包含的可选应用提供的上下文指针。
window
调用 ACameraCaptureSession_prepare 的窗口。
session
调用 ACameraCaptureSession_prepare 的相机捕获会话。

ACameraCaptureSession_stateCallback

声明于 camera/NdkCameraCaptureSession.h
void(* ACameraCaptureSession_stateCallback)(void *context, ACameraCaptureSession *session)

相机捕获会话状态回调函数的定义。

详情
参数
context
用户在 ACameraCaptureSession_stateCallbacks 中提供的可选应用上下文。
session
状态正在更改的相机捕获会话。

ACameraCaptureSession_stateCallbacks

声明于 camera/NdkCameraCaptureSession.h
struct ACameraCaptureSession_stateCallbacks ACameraCaptureSession_stateCallbacks

ACameraDevice

声明于 camera/NdkCameraCaptureSession.h
struct ACameraDevice ACameraDevice

ACameraDevice 是一个不透明类型,提供对相机设备的访问。

可以使用 ACameraManager_openCamera 方法获取指针。

ACameraDevice

声明于 camera/NdkCameraDevice.h
struct ACameraDevice ACameraDevice

ACameraDevice 是一个不透明类型,提供对相机设备的访问。

可以使用 ACameraManager_openCamera 方法获取指针。

ACameraDevice_ErrorStateCallback

声明于 camera/NdkCameraDevice.h
void(* ACameraDevice_ErrorStateCallback)(void *context, ACameraDevice *device, int error)

相机设备错误状态回调,用于 ACameraDevice_StateCallbacks

另请参阅: ERROR_CAMERA_IN_USE 另请参阅: ERROR_MAX_CAMERAS_IN_USE 另请参阅: ERROR_CAMERA_DISABLED 另请参阅: ERROR_CAMERA_DEVICE 另请参阅: ERROR_CAMERA_SERVICE

详情
参数
context
ACameraDevice_StateCallbacks 中的可选上下文将传递给此回调。
device
正在断开连接的 ACameraDevice
error
错误代码描述了此错误回调的原因。有关详细信息,请参阅以下链接。

ACameraDevice_StateCallback

声明于 camera/NdkCameraDevice.h
void(* ACameraDevice_StateCallback)(void *context, ACameraDevice *device)

相机设备状态回调,用于 ACameraDevice_StateCallbacks

详情
参数
context
ACameraDevice_StateCallbacks 中的可选上下文将传递给此回调。
device
正在断开连接的 ACameraDevice

ACameraDevice_StateCallbacks

声明于 camera/NdkCameraDevice.h
struct ACameraDevice_StateCallbacks ACameraDevice_StateCallbacks

应用程序用于处理相机设备状态更改的回调,通过 ACameraManager_openCamera 注册。

ACameraDevice_stateCallbacks

声明于 camera/NdkCameraDevice.h
ACameraDevice_StateCallbacks ACameraDevice_stateCallbacks

为了向后兼容性。

ACameraIdList

声明于 camera/NdkCameraDevice.h
struct ACameraIdList ACameraIdList

用于保存相机设备 ID 列表的结构体。

这可以指从 ACameraManager_getCameraIdList 返回的已连接相机设备的 ID,也可以指传递到 ACameraDevice_createCaptureRequest_withPhysicalIds 的物理相机 ID。

ACameraManager

camera/NdkCameraManager.h 中声明
struct ACameraManager ACameraManager

ACameraManager 是一个不透明类型,提供对相机服务的访问。

可以使用 ACameraManager_create 方法获取指针。

ACameraManager_AccessPrioritiesChangedCallback

camera/NdkCameraManager.h 中声明
void(* ACameraManager_AccessPrioritiesChangedCallback)(void *context)

相机访问权限更改回调函数的定义。

通知相机访问优先级已更改,现在相机可能可以打开。先前因优先级较高的用户已在使用相机而被拒绝相机访问的应用,或因优先级较高的用户尝试打开相机而与活动相机会话断开连接的应用,如果仍想使用相机,应尝试再次打开相机。请注意,多个应用可能会同时收到此回调,并且实践中只有一个应用能成功打开相机,具体取决于确切的访问优先级级别和时机。此方法适用于多个应用可能同时处于恢复状态,且用户在它们之间切换焦点,或者当前使用相机的应用在全屏和画中画 (PiP) 状态之间切换的情况。在这种情况下,不会调用相机可用/不可用回调,但另一个应用现在可能拥有比当前使用相机的应用更高的相机访问优先级。

详情
参数
context
ACameraManager_AvailabilityListener 中提供的可选应用上下文。

ACameraManager_AvailabilityCallback

camera/NdkCameraManager.h 中声明
void(* ACameraManager_AvailabilityCallback)(void *context, const char *cameraId)

相机可用性回调函数的定义。

详情
参数
context
ACameraManager_AvailabilityCallbacks 中提供的可选应用上下文。
cameraId
可用性正在更改的相机设备的 ID。此参数的内存由相机框架拥有,并且在此回调返回后将立即失效。

ACameraManager_AvailabilityCallbacks

camera/NdkCameraManager.h 中声明
struct ACameraManager_AvailabilityListener ACameraManager_AvailabilityCallbacks

用于监听相机设备何时变为可用或不可用打开的监听器。

相机在不再使用时或连接新的可移除相机时变为可用。当某些应用或服务开始使用相机时或可移除相机断开连接时,相机变为不可用。

另请参阅: ACameraManager_registerAvailabilityCallback

ACameraManager_ExtendedAvailabilityCallbacks

camera/NdkCameraManager.h 中声明
struct ACameraManager_ExtendedAvailabilityListener ACameraManager_ExtendedAvailabilityCallbacks

用于监听相机设备何时变为可用/不可用打开或相机访问权限何时更改的监听器。

相机在不再使用时或连接新的可移除相机时变为可用。当某些应用或服务开始使用相机时或可移除相机断开连接时,相机变为不可用。

另请参阅: ACameraManager_registerExtendedAvailabilityCallback

ACameraManager_PhysicalCameraAvailabilityCallback

camera/NdkCameraManager.h 中声明
void(* ACameraManager_PhysicalCameraAvailabilityCallback)(void *context, const char *cameraId, const char *physicalCameraId)

物理相机可用性回调函数的定义。

详情
参数
context
ACameraManager_AvailabilityCallbacks 中提供的可选应用上下文。
cameraId
物理相机状态正在更改的逻辑多相机设备的 ID。此参数的内存由相机框架拥有,并且在此回调返回后将立即失效。
physicalCameraId
状态正在更改的物理相机设备的 ID。此参数的内存由相机框架拥有,并且在此回调返回后将立即失效。

ACameraMetadata

声明于 camera/NdkCameraMetadata.h
struct ACameraMetadata ACameraMetadata

ACameraMetadata 是一个不透明类型,提供对只读相机元数据的访问,例如相机特性(通过 ACameraManager_getCameraCharacteristics)或捕获结果(通过 ACameraCaptureSession_captureCallback_result)。

ACameraMetadata_const_entry

声明于 camera/NdkCameraMetadata.h
struct ACameraMetadata_const_entry ACameraMetadata_const_entry

单个只读相机元数据条目。

每个条目都是一个值数组,但许多元数据字段在数组中可能只有一个条目。

ACameraMetadata_entry

声明于 camera/NdkCameraMetadata.h
struct ACameraMetadata_entry ACameraMetadata_entry

单个相机元数据条目。

每个条目都是一个值数组,但许多元数据字段在数组中可能只有一个条目。

ACameraMetadata_rational

声明于 camera/NdkCameraMetadata.h
struct ACameraMetadata_rational ACameraMetadata_rational

ACameraMetadata 中的 Rational 数据类型定义。

ACameraOutputTarget

camera/NdkCaptureRequest.h 中声明
struct ACameraOutputTarget ACameraOutputTarget

单个输出目标的容器。

ACameraOutputTargets

camera/NdkCaptureRequest.h 中声明
struct ACameraOutputTargets ACameraOutputTargets

输出目标的容器。

ACameraWindowType

camera/NdkCameraWindowType.h 中声明
ANativeWindow ACameraWindowType

此文件定义了 NDK 和 VNDK 变体 camera2 NDK 使用的窗口类型。

这使我们能够共享 API 定义头文件并避免代码重复(因为 VNDK 版本不像 NDK 版本那样使用 ANativeWindow)。 已弃用。 不再需要。NDK 和 VNDK 现在都使用 ANativeWindow。直接使用 ANativeWindow。

ACaptureRequest

camera/NdkCaptureRequest.h 中声明
struct ACaptureRequest ACaptureRequest

ACaptureRequest 是一个不透明类型,包含从相机设备捕获单个图像所需的设置和输出目标。

ACaptureRequest 包含捕获硬件(传感器、镜头、闪光灯)、处理管道、控制算法和输出缓冲区的配置。还包含要将图像数据发送到此捕获的目标 ANativeWindow 列表。

ACaptureRequest 由 ACameraDevice_createCaptureRequest 创建。

ACaptureRequest 会传递给 ACameraCaptureSession_captureACameraCaptureSession_setRepeatingRequest 以从相机捕获图像。

每个请求可以指定相机将捕获的数据发送到的目标 ANativeWindow 的不同子集。请求中使用的所有 ANativeWindow 必须是提交请求到会话时,上次调用 ACameraDevice_createCaptureSession 时提供的 ANativeWindow 列表的一部分。

例如,用于重复预览的请求可能只包含预览 SurfaceView 或 SurfaceTexture 的 ANativeWindow,而高分辨率静态捕获也将包含从为高分辨率 JPEG 图像配置的 AImageReader 获取的 ANativeWindow

另请参阅: ACameraDevice_createCaptureRequest 另请参阅: ACameraCaptureSession_capture 另请参阅: ACameraCaptureSession_setRepeatingRequest

ACaptureSessionOutput

声明于 camera/NdkCameraCaptureSession.h
struct ACaptureSessionOutput ACaptureSessionOutput

捕获会话输出的不透明对象,使用 ACaptureSessionOutput_createACaptureSessionSharedOutput_create 创建实例。

ACaptureSessionOutputContainer

声明于 camera/NdkCameraDevice.h
struct ACaptureSessionOutputContainer ACaptureSessionOutputContainer

CaptureSessionOutput 容器的不透明对象,使用 ACaptureSessionOutputContainer_create 创建实例。

ALogicalCameraCaptureFailure

声明于 camera/NdkCameraCaptureSession.h
struct ALogicalCameraCaptureFailure ALogicalCameraCaptureFailure

描述逻辑相机捕获失败的结构体。

acamera_metadata_enum_android_automotive_lens_facing_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_automotive_lens_facing acamera_metadata_enum_android_automotive_lens_facing_t

acamera_metadata_enum_android_automotive_location_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_automotive_location acamera_metadata_enum_android_automotive_location_t

acamera_metadata_enum_android_black_level_lock_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_black_level_lock acamera_metadata_enum_android_black_level_lock_t

acamera_metadata_enum_android_color_correction_aberration_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_color_correction_aberration_mode acamera_metadata_enum_android_color_correction_aberration_mode_t

acamera_metadata_enum_android_color_correction_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_color_correction_mode acamera_metadata_enum_android_color_correction_mode_t

需要枚举的各种条目的枚举定义。

acamera_metadata_enum_android_control_ae_antibanding_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_ae_antibanding_mode acamera_metadata_enum_android_control_ae_antibanding_mode_t

acamera_metadata_enum_android_control_ae_lock_available_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_ae_lock_available acamera_metadata_enum_android_control_ae_lock_available_t

acamera_metadata_enum_android_control_ae_lock_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_ae_lock acamera_metadata_enum_android_control_ae_lock_t

acamera_metadata_enum_android_control_ae_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_ae_mode acamera_metadata_enum_android_control_ae_mode_t

acamera_metadata_enum_android_control_ae_precapture_trigger_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_ae_precapture_trigger acamera_metadata_enum_android_control_ae_precapture_trigger_t

acamera_metadata_enum_android_control_ae_state_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_ae_state acamera_metadata_enum_android_control_ae_state_t

acamera_metadata_enum_android_control_af_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_af_mode acamera_metadata_enum_android_control_af_mode_t

acamera_metadata_enum_android_control_af_scene_change_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_af_scene_change acamera_metadata_enum_android_control_af_scene_change_t

acamera_metadata_enum_android_control_af_state_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_af_state acamera_metadata_enum_android_control_af_state_t

acamera_metadata_enum_android_control_af_trigger_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_af_trigger acamera_metadata_enum_android_control_af_trigger_t

acamera_metadata_enum_android_control_autoframing_available_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_autoframing_available acamera_metadata_enum_android_control_autoframing_available_t

acamera_metadata_enum_android_control_autoframing_state_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_autoframing_state acamera_metadata_enum_android_control_autoframing_state_t

acamera_metadata_enum_android_control_autoframing_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_autoframing acamera_metadata_enum_android_control_autoframing_t

acamera_metadata_enum_android_control_awb_lock_available_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_awb_lock_available acamera_metadata_enum_android_control_awb_lock_available_t

acamera_metadata_enum_android_control_awb_lock_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_awb_lock acamera_metadata_enum_android_control_awb_lock_t

acamera_metadata_enum_android_control_awb_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_awb_mode acamera_metadata_enum_android_control_awb_mode_t

acamera_metadata_enum_android_control_awb_state_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_awb_state acamera_metadata_enum_android_control_awb_state_t

acamera_metadata_enum_android_control_capture_intent_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_capture_intent acamera_metadata_enum_android_control_capture_intent_t

acamera_metadata_enum_android_control_effect_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_effect_mode acamera_metadata_enum_android_control_effect_mode_t

acamera_metadata_enum_android_control_enable_zsl_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_enable_zsl acamera_metadata_enum_android_control_enable_zsl_t

acamera_metadata_enum_android_control_extended_scene_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_extended_scene_mode acamera_metadata_enum_android_control_extended_scene_mode_t

acamera_metadata_enum_android_control_low_light_boost_state_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_low_light_boost_state acamera_metadata_enum_android_control_low_light_boost_state_t

acamera_metadata_enum_android_control_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_mode acamera_metadata_enum_android_control_mode_t

acamera_metadata_enum_android_control_scene_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_scene_mode acamera_metadata_enum_android_control_scene_mode_t

acamera_metadata_enum_android_control_settings_override_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_settings_override acamera_metadata_enum_android_control_settings_override_t

acamera_metadata_enum_android_control_video_stabilization_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_control_video_stabilization_mode acamera_metadata_enum_android_control_video_stabilization_mode_t

acamera_metadata_enum_android_depth_available_depth_stream_configurations_maximum_resolution_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_depth_available_depth_stream_configurations_maximum_resolution acamera_metadata_enum_android_depth_available_depth_stream_configurations_maximum_resolution_t

acamera_metadata_enum_android_depth_available_depth_stream_configurations_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_depth_available_depth_stream_configurations acamera_metadata_enum_android_depth_available_depth_stream_configurations_t

acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_maximum_resolution_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations_maximum_resolution acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_maximum_resolution_t

acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_depth_available_dynamic_depth_stream_configurations acamera_metadata_enum_android_depth_available_dynamic_depth_stream_configurations_t

acamera_metadata_enum_android_depth_depth_is_exclusive_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_depth_depth_is_exclusive acamera_metadata_enum_android_depth_depth_is_exclusive_t

acamera_metadata_enum_android_distortion_correction_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_distortion_correction_mode acamera_metadata_enum_android_distortion_correction_mode_t

acamera_metadata_enum_android_edge_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_edge_mode acamera_metadata_enum_android_edge_mode_t

acamera_metadata_enum_android_flash_info_available_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_flash_info_available acamera_metadata_enum_android_flash_info_available_t

acamera_metadata_enum_android_flash_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_flash_mode acamera_metadata_enum_android_flash_mode_t

acamera_metadata_enum_android_flash_state_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_flash_state acamera_metadata_enum_android_flash_state_t

acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_heic_available_heic_stream_configurations_maximum_resolution acamera_metadata_enum_android_heic_available_heic_stream_configurations_maximum_resolution_t

acamera_metadata_enum_android_heic_available_heic_stream_configurations_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_heic_available_heic_stream_configurations acamera_metadata_enum_android_heic_available_heic_stream_configurations_t

acamera_metadata_enum_android_hot_pixel_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_hot_pixel_mode acamera_metadata_enum_android_hot_pixel_mode_t

acamera_metadata_enum_android_info_supported_hardware_level_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_info_supported_hardware_level acamera_metadata_enum_android_info_supported_hardware_level_t

acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_maximum_resolution_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations_maximum_resolution acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_maximum_resolution_t

acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_jpegr_available_jpeg_r_stream_configurations acamera_metadata_enum_android_jpegr_available_jpeg_r_stream_configurations_t

acamera_metadata_enum_android_lens_facing_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_lens_facing acamera_metadata_enum_android_lens_facing_t

acamera_metadata_enum_android_lens_info_focus_distance_calibration_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_lens_info_focus_distance_calibration acamera_metadata_enum_android_lens_info_focus_distance_calibration_t

acamera_metadata_enum_android_lens_optical_stabilization_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_lens_optical_stabilization_mode acamera_metadata_enum_android_lens_optical_stabilization_mode_t

acamera_metadata_enum_android_lens_pose_reference_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_lens_pose_reference acamera_metadata_enum_android_lens_pose_reference_t

acamera_metadata_enum_android_lens_state_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_lens_state acamera_metadata_enum_android_lens_state_t

acamera_metadata_enum_android_logical_multi_camera_sensor_sync_type_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_logical_multi_camera_sensor_sync_type acamera_metadata_enum_android_logical_multi_camera_sensor_sync_type_t

acamera_metadata_enum_android_noise_reduction_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_noise_reduction_mode acamera_metadata_enum_android_noise_reduction_mode_t

acamera_metadata_enum_android_request_available_capabilities_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_request_available_capabilities acamera_metadata_enum_android_request_available_capabilities_t

acamera_metadata_enum_android_request_available_color_space_profiles_map_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_request_available_color_space_profiles_map acamera_metadata_enum_android_request_available_color_space_profiles_map_t

acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_request_available_dynamic_range_profiles_map acamera_metadata_enum_android_request_available_dynamic_range_profiles_map_t
声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_available_recommended_stream_configurations acamera_metadata_enum_android_scaler_available_recommended_stream_configurations_t

acamera_metadata_enum_android_scaler_available_stream_configurations_maximum_resolution_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_available_stream_configurations_maximum_resolution acamera_metadata_enum_android_scaler_available_stream_configurations_maximum_resolution_t

acamera_metadata_enum_android_scaler_available_stream_configurations_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_available_stream_configurations acamera_metadata_enum_android_scaler_available_stream_configurations_t

acamera_metadata_enum_android_scaler_available_stream_use_cases_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_available_stream_use_cases acamera_metadata_enum_android_scaler_available_stream_use_cases_t

acamera_metadata_enum_android_scaler_cropping_type_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_cropping_type acamera_metadata_enum_android_scaler_cropping_type_t

acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_multi_resolution_stream_supported acamera_metadata_enum_android_scaler_multi_resolution_stream_supported_t

acamera_metadata_enum_android_scaler_physical_camera_multi_resolution_stream_configurations_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_physical_camera_multi_resolution_stream_configurations acamera_metadata_enum_android_scaler_physical_camera_multi_resolution_stream_configurations_t

acamera_metadata_enum_android_scaler_rotate_and_crop_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_scaler_rotate_and_crop acamera_metadata_enum_android_scaler_rotate_and_crop_t

acamera_metadata_enum_android_sensor_info_color_filter_arrangement_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sensor_info_color_filter_arrangement acamera_metadata_enum_android_sensor_info_color_filter_arrangement_t

acamera_metadata_enum_android_sensor_info_lens_shading_applied_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sensor_info_lens_shading_applied acamera_metadata_enum_android_sensor_info_lens_shading_applied_t

acamera_metadata_enum_android_sensor_info_timestamp_source_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sensor_info_timestamp_source acamera_metadata_enum_android_sensor_info_timestamp_source_t

acamera_metadata_enum_android_sensor_pixel_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sensor_pixel_mode acamera_metadata_enum_android_sensor_pixel_mode_t

acamera_metadata_enum_android_sensor_raw_binning_factor_used_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sensor_raw_binning_factor_used acamera_metadata_enum_android_sensor_raw_binning_factor_used_t

acamera_metadata_enum_android_sensor_reference_illuminant1_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sensor_reference_illuminant1 acamera_metadata_enum_android_sensor_reference_illuminant1_t

acamera_metadata_enum_android_sensor_test_pattern_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sensor_test_pattern_mode acamera_metadata_enum_android_sensor_test_pattern_mode_t

acamera_metadata_enum_android_shading_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_shading_mode acamera_metadata_enum_android_shading_mode_t

acamera_metadata_enum_android_statistics_face_detect_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_statistics_face_detect_mode acamera_metadata_enum_android_statistics_face_detect_mode_t

acamera_metadata_enum_android_statistics_hot_pixel_map_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_statistics_hot_pixel_map_mode acamera_metadata_enum_android_statistics_hot_pixel_map_mode_t

acamera_metadata_enum_android_statistics_lens_shading_map_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_statistics_lens_shading_map_mode acamera_metadata_enum_android_statistics_lens_shading_map_mode_t

acamera_metadata_enum_android_statistics_ois_data_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_statistics_ois_data_mode acamera_metadata_enum_android_statistics_ois_data_mode_t

acamera_metadata_enum_android_statistics_scene_flicker_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_statistics_scene_flicker acamera_metadata_enum_android_statistics_scene_flicker_t

acamera_metadata_enum_android_sync_frame_number_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sync_frame_number acamera_metadata_enum_android_sync_frame_number_t

acamera_metadata_enum_android_sync_max_latency_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_sync_max_latency acamera_metadata_enum_android_sync_max_latency_t

acamera_metadata_enum_android_tonemap_mode_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_tonemap_mode acamera_metadata_enum_android_tonemap_mode_t

acamera_metadata_enum_android_tonemap_preset_curve_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_enum_acamera_tonemap_preset_curve acamera_metadata_enum_android_tonemap_preset_curve_t

acamera_metadata_section_start_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_section_start acamera_metadata_section_start_t

枚举空间中的层级位置。

acamera_metadata_section_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_section acamera_metadata_section_t

acamera_metadata_tag_t

声明于 camera/NdkCameraMetadataTags.h
enum acamera_metadata_tag acamera_metadata_tag_t

相机元数据标签主枚举类型。

函数

ACameraCaptureSession_abortCaptures

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_abortCaptures(
  ACameraCaptureSession *session
)

尽快丢弃所有当前待处理和进行中的捕获。

相机设备将尽快丢弃其当前所有工作。一些正在进行的捕获可能成功完成并调用 ACameraCaptureSession_captureCallbacks#onCaptureCompleted,而其他则会触发其 ACameraCaptureSession_captureCallbacks#onCaptureFailed 回调。如果设置了重复请求列表,则会清除。

此方法是使用 ACameraDevice_createCaptureSession 将相机设备快速切换到新会话的最快方法,代价是丢弃正在进行的工作。必须在新会话创建之前调用此方法。一旦所有挂起的请求都已完成或丢弃,如果会话尚未关闭,将调用 ACameraCaptureSession_stateCallbacks#onReady 回调。否则,当相机设备创建新会话且旧会话正从内存中移除时,将触发 ACameraCaptureSession_stateCallbacks#onClosed 回调。

取消会话至少会短暂暂停相机设备的数据流,因为一旦相机设备被清空,第一个新请求必须通过整个相机管道才能生成新的输出缓冲区。

这意味着不建议仅仅为了移除挂起请求而使用 ACameraCaptureSession_abortCaptures;最好将其用于快速切换输出配置或取消耗时较长的进行中请求(例如多秒捕获)。

详情
参数
session
相关的捕获会话
返回值

ACameraCaptureSession_capture

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_capture(
  ACameraCaptureSession *session,
  ACameraCaptureSession_captureCallbacks *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

提交一组请求,以尽可能短的时间按序列作为连拍进行捕获。

突发捕获将以最短的时间完成,并且不会与由其他捕获或重复调用提交的请求交错。

每次捕获都会生成一个 ACameraMetadata 作为捕获结果,并生成一个或多个目标 ANativeWindow 的图像缓冲区。目标 ANativeWindows(通过 ACaptureRequest_addTarget 设置)必须是在创建此捕获会话时提供的 ANativeWindow 子集。

详情
参数
session
相关的捕获会话
callbacks
与此捕获序列关联的 ACameraCaptureSession_captureCallbacks。如果设置为 NULL,则不会触发任何捕获回调。
numRequests
requests 参数中的请求数量。必须至少为 1。
requests
要捕获的 ACaptureRequest 数组。长度必须至少为 numRequests。
captureSequenceId
如果此参数不为 NULL 且方法调用成功,则与此捕获方法调用关联的捕获序列 ID 将存储在此处。如果此参数设置为 NULL,则不会返回捕获序列 ID。
返回值

ACameraCaptureSession_captureV2

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_captureV2(
  ACameraCaptureSession *session,
  ACameraCaptureSession_captureCallbacksV2 *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

此函数的功能与 ACameraCaptureSession_capture 相同,并增加了对相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。

ACameraCaptureSession_close

声明于 camera/NdkCameraCaptureSession.h
void ACameraCaptureSession_close(
  ACameraCaptureSession *session
)

关闭此捕获会话。

关闭会话会释放会话的目标输出 Surface,以便与新会话或其他可以绘制到 Surface 的 API 重用。

请注意,使用 ACameraDevice_createCaptureSession 创建新的捕获会话将自动关闭任何现有捕获会话,并调用旧会话监听器的 ACameraCaptureSession_stateCallbacks#onClosed 回调。建议直接使用 ACameraDevice_createCaptureSession 而不关闭旧会话,以便快速切换到新会话,因为未更改的目标输出可以更有效地重用。

会话关闭后且在调用 ACameraCaptureSession_stateCallbacks#onClosed 之前,在会话上调用的所有方法都将返回 ACAMERA_ERROR_SESSION_CLOSED,并且任何重复请求都会停止(如同调用了 ACameraCaptureSession_stopRepeating)。但是,提交到会话的任何正在进行的捕获请求将正常完成;一旦所有捕获都已完成并且会话已拆除,将调用 ACameraCaptureSession_stateCallbacks#onClosed 回调,并且该会话将从内存中移除。

关闭会话是幂等的;多次关闭没有效果。

详情
参数
session
相关的捕获会话

ACameraCaptureSession_getDevice

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_getDevice(
  ACameraCaptureSession *session,
  ACameraDevice **device
)

如果方法成功,在 device 参数中获取与此捕获会话关联的 ACameraDevice 指针。

详情
参数
session
相关的捕获会话
device
与会话关联的 ACameraDevice。如果会话已关闭或此方法失败,则将设置为 NULL。
返回值

ACameraCaptureSession_logicalCamera_capture

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_logicalCamera_capture(
  ACameraCaptureSession *session,
  ACameraCaptureSession_logicalCamera_captureCallbacks *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

此函数的功能与 ACameraCaptureSession_capture 相同,并增加了对逻辑多相机的支持,其中捕获回调支持物理相机的结果元数据。

ACameraCaptureSession_logicalCamera_captureV2

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_logicalCamera_captureV2(
  ACameraCaptureSession *session,
  ACameraCaptureSession_logicalCamera_captureCallbacksV2 *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

此函数的功能与 ACameraCaptureSession_logical_capture 相同,并增加了对逻辑多相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。

ACameraCaptureSession_logicalCamera_setRepeatingRequest

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_logicalCamera_setRepeatingRequest(
  ACameraCaptureSession *session,
  ACameraCaptureSession_logicalCamera_captureCallbacks *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

此函数的功能与 ACameraCaptureSession_setRepeatingRequest 相同,并增加了对逻辑多相机的支持,其中捕获回调支持物理相机的结果元数据。

ACameraCaptureSession_logicalCamera_setRepeatingRequestV2

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_logicalCamera_setRepeatingRequestV2(
  ACameraCaptureSession *session,
  ACameraCaptureSession_logicalCamera_captureCallbacksV2 *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

此函数的功能与 ACameraCaptureSession_logical_setRepeatingRequest 相同,并增加了对逻辑多相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。

ACameraCaptureSession_prepareWindow

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_prepareWindow(
  ACameraCaptureSession *session,
  ANativeWindow *window
)

为输出窗口预分配所有缓冲区。

通常,给定输出窗口的图像缓冲区是按需分配的,以最大程度地减少启动延迟和内存开销。

但是,在某些情况下,可能需要先分配缓冲区,然后再向设备提交针对该窗口的任何请求。大型缓冲区的分配可能需要一些时间,这可能导致在分配了足够的缓冲区以达到稳定状态行为之前提交请求的延迟。此类延迟可能导致突发捕获比预期花费更长时间,或导致预览输出出现跳帧或卡顿。

可以使用 ACameraCaptureSession_prepare() 调用来执行此预分配。它只能在窗口用作请求的目标之前为给定输出窗口调用。分配的缓冲区数量是提供输出窗口的使用者所需的数量与相机设备填充其管道所需的最大数量的总和。由于此数量可能大于稳定状态操作实际需要的数量,因此使用此调用可能导致内存消耗高于正常按需行为的结果。此方法也会延迟向给定 Surface 输出第一个像素的时间,以换取分配完成后更流畅的帧速率。

例如,创建一个 maxImages 参数为 10 的 AImageReader,但一次只使用 3 个同步 AImage 的应用,通常只会导致分配这 3 个图像(加上相机设备为流畅运行所需的图像)。但是,在 AImageReader 的窗口上使用 ACameraCaptureSession_prepare() 将导致分配所有 10 个 AImage。因此,使用此方法的应用应注意仅请求其应用实际需要的缓冲区数量。

如果在连续的会话中使用相同的输出窗口(未显式关闭第一个会话),则其已分配的缓冲区将被结转,并且如果在第一个会话中用作捕获请求的目标,则不能在第二个会话中对其调用 prepare。如果调用,则该方法将返回 ACAMERA_ERROR_INVALID_PARAMETER

分配完成后,将使用提供给此方法的输出来调用 ACameraCaptureSession_prepareCallback#onWindowPrepared。在 prepare 调用和 ACameraCaptureSession_prepareCallback#onWindowPrepared 调用之间,提供给 prepare 的输出不得用作提交到此会话的捕获请求的目标。

LEGACY 设备无法预分配输出缓冲区;对于这些设备,将立即调用 ACameraCaptureSession_prepareCallback#onWindowPrepared,并且不执行预分配。

详情
参数
session
需要准备输出缓冲区的 ACameraCaptureSession
window
需要准备输出缓冲区的 ANativeWindow
返回值

ACameraCaptureSession_setRepeatingRequest

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_setRepeatingRequest(
  ACameraCaptureSession *session,
  ACameraCaptureSession_captureCallbacks *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

通过此捕获会话请求无限重复捕获图像序列。

通过此方法,相机设备将持续捕获图像,以最快速度循环遍历提供的 ACaptureRequest 列表中的设置。

如果通过 ACameraCaptureSession_capture 提交请求,则将在处理优先级更高的请求之前完成当前请求列表的重复。这保证应用始终收到以最小时间捕获的完整重复突发捕获,而不是与优先级更高的捕获交错或不完整的捕获。

重复突发请求是应用维护预览或其他连续帧流的简单方式,其中每个请求以可预测的方式不同,而无需持续通过 ACameraCaptureSession_capture 提交请求。

要停止重复捕获,请调用 ACameraCaptureSession_stopRepeating。但是,任何正在进行的突发捕获仍将完成,处于捕获过程中的任何突发捕获也将完成。调用 ACameraCaptureSession_abortCaptures 也会清除请求。

调用此方法将替换先前通过此方法设置的重复请求集,但任何正在进行的突发捕获将在使用新重复突发捕获之前完成。

详情
参数
session
相关的捕获会话
callbacks
与此捕获序列关联的 ACameraCaptureSession_captureCallbacks。如果 callbacks 设置为 NULL,则不会触发捕获回调。
numRequests
requests 数组中的请求数量。必须至少为 1。
requests
要捕获的 ACaptureRequest 数组。长度必须至少为 numRequests。
captureSequenceId
如果此参数不为 NULL 且方法调用成功,则与此捕获方法调用关联的捕获序列 ID 将存储在此处。如果此参数设置为 NULL,则不会返回捕获序列 ID。
返回值

ACameraCaptureSession_setRepeatingRequestV2

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_setRepeatingRequestV2(
  ACameraCaptureSession *session,
  ACameraCaptureSession_captureCallbacksV2 *callbacks,
  int numRequests,
  ACaptureRequest **requests,
  int *captureSequenceId
)

此函数的功能与 ACameraCaptureSession_logical_setRepeatingRequest 相同,并增加了对逻辑多相机回调 v2 的支持,其中 onCaptureStarted 回调在其参数列表中增加了帧编号。

ACameraCaptureSession_setWindowPreparedCallback

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_setWindowPreparedCallback(
  ACameraCaptureSession *session,
  void *context,
  ACameraCaptureSession_prepareCallback callback
)

设置回调函数,当客户端通过调用 ACameraCaptureSession_prepareWindow 请求预分配缓冲区的输出窗口完成缓冲区预分配时,将调用此回调函数。

详情
参数
session
在其上调用 ACameraCaptureSession_prepareWindow 的 ACameraCaptureSession。
context
可选的应用提供的上下文。这将传递到 onWindowPrepared 回调的 context 参数中。
callback
输出窗口缓冲区预分配完成后要调用的回调。
返回值

ACameraCaptureSession_stopRepeating

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_stopRepeating(
  ACameraCaptureSession *session
)

取消由 ACameraCaptureSession_setRepeatingRequest 设置的任何正在进行的重复捕获。

对通过 ACameraCaptureSession_capture 提交的请求没有影响。

任何当前正在进行的捕获都将完成,任何正在进行的突发捕获也将完成。要确保设备已完成处理所有捕获请求并处于就绪状态,请在此方法调用后等待 ACameraCaptureSession_stateCallbacks#onReady 回调。

详情
参数
session
相关的捕获会话
返回值

ACameraCaptureSession_updateSharedOutput

声明于 camera/NdkCameraCaptureSession.h
camera_status_t ACameraCaptureSession_updateSharedOutput(
  ACameraCaptureSession *session,
  ACaptureSessionOutput *output
)

更新共享的 ACaptureSessionOutput。

通过调用 ACaptureSessionSharedOutput_addACaptureSessionSharedOutput_remove 修改的共享 ACaptureSessionOutput(参见 ACaptureSessionSharedOutput_create)必须通过调用此方法进行更新,其更改才会生效。更新调用返回 ACAMERA_OK 后,任何新添加的 native window 都可以用作后续捕获请求的目标。

已移除的本地窗口不得属于任何活动的重复或单次/突发请求,也不得有任何待处理的结果。考虑通过 ACameraCaptureSession_setRepeatingRequest 更新重复请求,然后等待序列完成时的最后帧号 ACameraCaptureSession_captureCallbacks#onCaptureSequenceCompleted

新增的本地窗口不得属于任何其他已注册的 ACaptureSessionOutput,并且必须兼容。兼容的窗口必须具有匹配的格式、旋转和消费者用途。

共享的 ACameraCaptureSession 最多可支持 4 个额外的本地窗口。

详情
参数
session
相关的捕获会话
输出
修改后的输出配置
返回值

ACameraDevice_close

声明于 camera/NdkCameraDevice.h
camera_status_t ACameraDevice_close(
  ACameraDevice *device
)

同步关闭连接并释放此 ACameraDevice。

调用此方法后访问 ACameraDevice 会导致崩溃。

调用此方法后,对与此 ACameraDevice 关联的活动 ACameraCaptureSession 的所有调用都将返回 ACAMERA_ERROR_SESSION_CLOSED,但对 ACameraCaptureSession_close 的调用除外。

此方法将停止通过 ACameraCaptureSession_setRepeatingRequest 发送的所有重复捕获,并阻塞直到所有通过 ACameraCaptureSession_capture 发送的捕获请求完成。方法返回后,相机设备将从内存中移除,访问已关闭的相机设备指针会导致崩溃。

详情
参数
device
要关闭的相机设备
返回值

ACameraDevice_createCaptureRequest

声明于 camera/NdkCameraDevice.h
camera_status_t ACameraDevice_createCaptureRequest(
  const ACameraDevice *device,
  ACameraDevice_request_template templateId,
  ACaptureRequest **request
)

创建一个用于捕获图像的 ACaptureRequest,使用目标用例的模板进行初始化。

这些设置是为此相机设备选择的最佳选项,因此不建议将同一请求用于其他相机设备。

另请参阅: TEMPLATE_PREVIEW 另请参阅: TEMPLATE_RECORD 另请参阅: TEMPLATE_STILL_CAPTURE 另请参阅: TEMPLATE_VIDEO_SNAPSHOT 另请参阅: TEMPLATE_MANUAL

详情
参数
device
相关相机设备
templateId
要创建的捕获请求类型。请参阅 ACameraDevice_request_template
request
如果方法调用成功,输出请求将存储在此处。
返回值

ACameraDevice_createCaptureRequest_withPhysicalIds

声明于 camera/NdkCameraDevice.h
camera_status_t ACameraDevice_createCaptureRequest_withPhysicalIds(
  const ACameraDevice *device,
  ACameraDevice_request_template templateId,
  const ACameraIdList *physicalIdList,
  ACaptureRequest **request
)

创建一个用于捕获图像的逻辑多相机 ACaptureRequest,使用目标用例的模板进行初始化,并能够指定物理相机设置。

这些设置是为此相机设备选择的最佳选项,因此不建议将同一请求用于其他相机设备。

请注意,对于物理相机设置中的所有键,只有 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中声明的键才适用。相机设备会忽略所有其他键。

另请参阅: TEMPLATE_PREVIEW 另请参阅: TEMPLATE_RECORD 另请参阅: TEMPLATE_STILL_CAPTURE 另请参阅: TEMPLATE_VIDEO_SNAPSHOT 另请参阅: TEMPLATE_MANUAL

详情
参数
device
相关相机设备
templateId
要创建的捕获请求类型。请参阅 ACameraDevice_request_template
physicalIdList
可用于为特定物理相机自定义请求的物理相机 ID 列表。
request
如果方法调用成功,输出请求将存储在此处。
返回值

ACameraDevice_createCaptureSession

声明于 camera/NdkCameraDevice.h
camera_status_t ACameraDevice_createCaptureSession(
  ACameraDevice *device,
  const ACaptureSessionOutputContainer *outputs,
  const ACameraCaptureSession_stateCallbacks *callbacks,
  ACameraCaptureSession **session
)

通过向相机设备提供 ANativeWindow 的目标输出集来创建一个新的相机捕获会话。

如果存在预先存在的会话,则之前的会话将自动关闭。但是,应用仍需要在之前的会话上调用 ACameraCaptureSession_close。否则,之前会话持有的资源将不会被释放。

活动的捕获会话确定了相机设备针对每个捕获请求的潜在输出 ANativeWindow 集合。给定的请求可以使用所有或部分输出。创建 ACameraCaptureSession 后,可以使用 ACameraCaptureSession_captureACameraCaptureSession_setRepeatingRequest 提交请求。

通常,此方法使用的 ANativeWindow 可以通过 ANativeWindow_fromSurface NDK 方法从 Surface Java 对象获取。适合作为相机输出的 Surface 或 ANativeWindow 可以针对各种用例和目标创建。

相机设备在此调用时将查询每个 ANativeWindow 的大小和格式,因此此时必须将它们设置为有效设置。

会话配置可能需要几百毫秒才能完成,因为相机硬件可能需要通电或重新配置。

如果调用此方法时已存在先前的 ACameraCaptureSession,则之前的会话将不再能够接受新的捕获请求并将被关闭。在关闭之前,之前会话上的任何进行中的捕获请求都将完成。为了最大限度地缩短过渡时间,在创建新会话之前,可以使用 ACameraCaptureSession_abortCaptures 方法丢弃先前捕获会话的剩余请求。请注意,一旦创建新会话,旧会话的捕获就无法再中止。

使用更高分辨率的输出或更多的输出,可能会导致设备的输出速率变慢。

使用空列表配置会话将关闭当前会话(如果存在)。这可用于释放当前会话的目标 Surface 以供其他用途。

虽然在配置单个输出流时可以使用 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中的任何大小,但在同时配置多个输出时,给定的相机设备可能无法支持所有大小、格式和目标的组合。下表列出了根据相机设备的功能,流和目标组合的最大保证分辨率。

如果应用尝试使用超出下表所述限制的一组目标创建会话,则可能会出现以下三种情况之一。第一,会话可能成功创建并正常工作。第二,会话可能成功创建,但相机设备无法达到 ACAMERA_SCALER_AVAILABLE_MIN_FRAME_DURATIONS 中所述的帧率保证。第三,如果根本无法使用输出集,则会话创建将完全失败,并返回 ACAMERA_ERROR_STREAM_CONFIGURE_FAIL

对于类型列,PRIV 指的是输出格式 AIMAGE_FORMAT_PRIVATEYUV 指的是输出格式 AIMAGE_FORMAT_YUV_420_888JPEG 指的是输出格式 AIMAGE_FORMAT_JPEGRAW 指的是输出格式 AIMAGE_FORMAT_RAW16

对于最大尺寸列,PREVIEW 指的是与设备屏幕分辨率或 1080p (1920x1080) 最佳匹配的大小,取较小者。RECORD 指的是由 android.media.CamcorderProfiles 确定的相机设备支持的最大录制分辨率。MAXIMUM 指的是相机设备针对 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 中该格式或目标的最大输出分辨率。

要使用这些表格,请确定所需的输出数量以及格式/目标,并在表中找到包含这些目标的行。尺寸表示可以使用的最大尺寸集;保证对于这些目标,列表中的尺寸以及 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 给定的列表中小于这些尺寸的任何尺寸,都可以成功用于创建会话。例如,如果某行指示 8 兆像素 (MP) YUV_420_888 输出可以与 2 MP PRIV 输出一起使用,则可以使用目标 [8 MP YUV, 2 MP PRIV] 或目标 [2 MP YUV, 2 MP PRIV] 创建会话;但是,目标为 [8 MP YUV, 4 MP PRIV][4 MP YUV, 4 MP PRIV][8 MP PRIV, 2 MP YUV] 的会话则不保证能正常工作,除非表中的其他行列出了此类组合。

旧版设备 (ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL==LEGACY) 至少支持以下流组合

LEGACY 级别保证配置
目标 1 目标 2 目标 3 示例用例
类型 最大尺寸 类型 最大尺寸 类型 最大尺寸
PRIV MAXIMUM 简单预览、GPU 视频处理或无预览视频录制。
JPEG MAXIMUM 无取景器静止图像捕获。
YUV MAXIMUM 应用内视频/图像处理。
PRIV PREVIEW JPEG MAXIMUM 标准静止图像。
YUV PREVIEW JPEG MAXIMUM 应用内处理加静止捕获。
PRIV PREVIEW PRIV PREVIEW 标准录制。
PRIV PREVIEW YUV PREVIEW 预览加应用内处理。
PRIV PREVIEW YUV PREVIEW JPEG MAXIMUM 静止捕获加应用内处理。

LIMITED 级别 (ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL==LIMITED) 设备除支持 LEGACY 设备支持的组合外,至少还支持以下流组合

LIMITED 级别附加保证配置
目标 1 目标 2 目标 3 示例用例
类型 最大尺寸 类型 最大尺寸 类型 最大尺寸
PRIV PREVIEW PRIV RECORD 带预览的高分辨率视频录制。
PRIV PREVIEW YUV RECORD 带预览的高分辨率应用内视频处理。
YUV PREVIEW YUV RECORD 双输入应用内视频处理。
PRIV PREVIEW PRIV RECORD JPEG RECORD 带视频快照的高分辨率录制。
PRIV PREVIEW YUV RECORD JPEG RECORD 带视频快照的高分辨率应用内处理。
YUV PREVIEW YUV PREVIEW JPEG MAXIMUM 双输入应用内处理加静止捕获。

FULL 级别 (ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL==FULL) 设备除支持 LIMITED 设备支持的组合外,至少还支持以下流组合

FULL 级别附加保证配置
目标 1 目标 2 目标 3 示例用例
类型 最大尺寸 类型 最大尺寸 类型 最大尺寸
PRIV PREVIEW PRIV MAXIMUM 带预览的最大分辨率 GPU 处理。
PRIV PREVIEW YUV MAXIMUM 带预览的最大分辨率应用内处理。
YUV PREVIEW YUV MAXIMUM 最大分辨率双输入应用内处理。
PRIV PREVIEW PRIV PREVIEW JPEG MAXIMUM 视频录制带最大尺寸视频快照
YUV 640x480 PRIV PREVIEW YUV MAXIMUM 标准视频录制加最大分辨率应用内处理。
YUV 640x480 YUV PREVIEW YUV MAXIMUM 预览加双输入最大分辨率应用内处理。

RAW 功能 (ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 RAW) 设备除了在 FULLLIMITED 设备上支持的功能外,还至少支持以下流组合

RAW 功能附加保证配置
目标 1 目标 2 目标 3 示例用例
类型 最大尺寸 类型 最大尺寸 类型 最大尺寸
RAW MAXIMUM 无预览 DNG 捕获。
PRIV PREVIEW RAW MAXIMUM 标准 DNG 捕获。
YUV PREVIEW RAW MAXIMUM 应用内处理加 DNG 捕获。
PRIV PREVIEW PRIV PREVIEW RAW MAXIMUM 视频录制带 DNG 捕获。
PRIV PREVIEW YUV PREVIEW RAW MAXIMUM 预览带应用内处理和 DNG 捕获。
YUV PREVIEW YUV PREVIEW RAW MAXIMUM 双输入应用内处理加 DNG 捕获。
PRIV PREVIEW JPEG MAXIMUM RAW MAXIMUM 静止捕获同时包含 JPEG 和 DNG。
YUV PREVIEW JPEG MAXIMUM RAW MAXIMUM 应用内处理同时包含 JPEG 和 DNG。

BURST 功能 (ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 BURST_CAPTURE) 设备除支持 LIMITED 设备支持的组合外,至少还支持以下流组合。请注意,所有 FULL 级别设备都支持 BURST 功能,并且以下列表是 FULL 级别设备列表的严格子集,因此此表仅适用于支持 BURST_CAPTURE 功能的 LIMITED 级别设备。

BURST 功能附加保证配置
目标 1 目标 2 示例用例
类型 最大尺寸 类型 最大尺寸
PRIV PREVIEW PRIV MAXIMUM 带预览的最大分辨率 GPU 处理。
PRIV PREVIEW YUV MAXIMUM 带预览的最大分辨率应用内处理。
YUV PREVIEW YUV MAXIMUM 最大分辨率双输入应用内处理。

LEVEL-3 (ACAMERA_INFO_SUPPORTED_HARDWARE_LEVEL==LEVEL_3) 除支持 FULL 和 RAW 功能 (ACAMERA_REQUEST_AVAILABLE_CAPABILITIES 包含 RAW) 的组合外,至少还支持以下流组合

LEVEL-3 附加保证配置
目标 1 目标 2 目标 3 目标 4 示例用例
类型 最大尺寸 类型 最大尺寸 类型 最大尺寸 类型 最大尺寸
PRIV PREVIEW PRIV 640x480 YUV MAXIMUM RAW MAXIMUM 带动态输出格式选择的应用内取景器分析。
PRIV PREVIEW PRIV 640x480 JPEG MAXIMUM RAW MAXIMUM 带动态输出格式选择的应用内取景器分析。

由于相机设备的功能差异很大,给定的相机设备可能支持超出这些保证尺寸的目标组合,但这只能通过尝试使用此类目标创建会话来测试。

176x144 (QCIF) 分辨率例外:相机设备通常具有从较高分辨率缩小到较低分辨率的固定能力,并且由于高分辨率图像传感器设备的此限制,QCIF 分辨率有时无法完全支持。因此,尝试将 QCIF 分辨率流与任何其他大于 1920x1080 分辨率(宽度或高度)的流一起配置可能不受支持,如果不支持,捕获会话创建将失败。

详情
参数
device
相关相机设备。
outputs
ACaptureSessionOutputContainer 描述所有输出流。
callbacks
session
如果方法调用成功,创建的 ACameraCaptureSession 将填充到此处。
返回值

ACameraDevice_createCaptureSessionWithSessionParameters

声明于 camera/NdkCameraDevice.h
camera_status_t ACameraDevice_createCaptureSessionWithSessionParameters(
  ACameraDevice *device,
  const ACaptureSessionOutputContainer *outputs,
  const ACaptureRequest *sessionParameters,
  const ACameraCaptureSession_stateCallbacks *callbacks,
  ACameraCaptureSession **session
)

创建一个新的相机捕获会话,类似于 ACameraDevice_createCaptureSession

此函数允许客户端在会话初始化期间传递额外的会话参数。有关会话参数的更多信息,请参阅 ACAMERA_REQUEST_AVAILABLE_SESSION_KEYS

详情
参数
device
相关相机设备。
outputs
ACaptureSessionOutputContainer 描述所有输出流。
sessionParameters
包含 ACAMERA_REQUEST_AVAILABLE_SESSION_KEYS 中声明的会话参数初始值的可选捕获请求。
callbacks
ACameraCaptureSession_stateCallbacks 捕获会话状态回调。
session
如果方法调用成功,创建的 ACameraCaptureSession 将填充到此处。
返回值

ACameraDevice_getId

声明于 camera/NdkCameraDevice.h
const char * ACameraDevice_getId(
  const ACameraDevice *device
)

返回与此相机设备关联的相机 ID。

详情
参数
device
要关闭的相机设备
返回值
相机 ID 字符串。返回的字符串由框架管理,不应由应用删除/释放。此外,设备关闭后不得使用返回的字符串。

ACameraDevice_isSessionConfigurationSupported

声明于 camera/NdkCameraDevice.h
camera_status_t ACameraDevice_isSessionConfigurationSupported(
  const ACameraDevice *device,
  const ACaptureSessionOutputContainer *sessionOutputContainer
)

检查相机设备是否支持特定的 ACaptureSessionOutputContainer

此方法对给定的 ACaptureSessionOutputContainer 执行运行时检查。结果确认传递的 CaptureSession 输出是否可以成功用于使用 ACameraDevice_createCaptureSession 创建相机捕获会话。

此方法可以在活动捕获会话之前、期间和之后的任何时候调用。它不得以任何方式影响正常的相机行为,并且必须比创建捕获会话快得多。

尽管此方法比创建新的捕获会话更快,但它不适用于探索所有支持的流组合。

详情
参数
device
相关相机设备
sessionOutputContainer
返回值

ACameraManager_create

camera/NdkCameraManager.h 中声明
ACameraManager * ACameraManager_create()

创建 ACameraManager 实例。

ACameraManager 负责检测、描述和连接到 ACameraDevice

调用方在使用完 ACameraManager 实例后,必须调用 ACameraManager_delete 释放资源。

详情
返回值
一个 ACameraManager 实例。

ACameraManager_delete

camera/NdkCameraManager.h 中声明
void ACameraManager_delete(
  ACameraManager *manager
)

删除 ACameraManager 实例并释放其资源。

详情
参数
manager
要删除的 ACameraManager 实例。

ACameraManager_deleteCameraIdList

camera/NdkCameraManager.h 中声明
void ACameraManager_deleteCameraIdList(
  ACameraIdList *cameraIdList
)

删除通过 ACameraManager_getCameraIdList 分配的相机设备列表。

详情
参数
cameraIdList
要删除的 ACameraIdList

ACameraManager_getCameraCharacteristics

camera/NdkCameraManager.h 中声明
camera_status_t ACameraManager_getCameraCharacteristics(
  ACameraManager *manager,
  const char *cameraId,
  ACameraMetadata **characteristics
)

查询相机设备的能力。

这些功能对于给定相机是不可变的。

参见 ACameraMetadata 文档和 NdkCameraMetadataTags.h 获取更多详细信息。

调用方必须调用 ACameraMetadata_free 来释放输出特性的内存。

详情
参数
manager
感兴趣的 ACameraManager
cameraId
感兴趣的相机设备的 ID 字符串。
特性
如果方法调用成功,输出的 ACameraMetadata 将在此处填充。
返回值

ACameraManager_getCameraIdList

camera/NdkCameraManager.h 中声明
camera_status_t ACameraManager_getCameraIdList(
  ACameraManager *manager,
  ACameraIdList **cameraIdList
)

创建当前连接的相机设备列表,包括可能被其他相机 API 客户端使用的相机。

不可移除的相机使用从 0 开始的整数作为标识符,而可移除的相机为每个独立设备拥有唯一的标识符,即使它们是相同的型号。

ACameraManager_getCameraIdList 将分配并返回一个 ACameraIdList。调用方必须调用 ACameraManager_deleteCameraIdList 来释放内存。

注意:返回的相机列表可能是 SDK CameraManager::getCameraIdList API 输出的子集,因为 NDK API 不支持某些旧式相机硬件。

详情
参数
manager
感兴趣的 ACameraManager
cameraIdList
如果方法调用成功,输出的 ACameraIdList 将在此处填充。
返回值

ACameraManager_openCamera

camera/NdkCameraManager.h 中声明
camera_status_t ACameraManager_openCamera(
  ACameraManager *manager,
  const char *cameraId,
  ACameraDevice_StateCallbacks *callback,
  ACameraDevice **device
)

打开与给定 ID 相机的连接。

打开的相机设备将通过 device 参数返回。

使用 ACameraManager_getCameraIdList 获取可用相机设备的列表。请注意,即使某个 ID 已列出,如果在调用 ACameraManager_getCameraIdListACameraManager_openCamera 之间设备断开连接,或者如果更高优先级的相机 API 客户端开始使用该相机设备,打开操作可能会失败。

由于设备被低优先级后台相机 API 客户端占用而导致调用了 ACameraManager_AvailabilityCallbacks#onCameraUnavailable 回调的设备,当调用方相机 API 客户端的优先级高于当前使用此设备的相机 API 客户端时,仍然可以通过调用此方法来尝试打开。通常,如果您的应用进程正在运行顶层、前台 Activity,您的进程在访问相机时将获得最高优先级,并且即使相机设备被另一个相机 API 客户端使用,此方法也会成功。以这种方式失去相机控制权的任何低优先级应用程序将收到一个 ACameraDevice_StateCallbacks#onDisconnected 回调。

一旦相机成功打开,ACameraDevice 可以通过调用 ACameraDevice_createCaptureSessionACameraDevice_createCaptureRequest 进行设置以供操作。

如果在此函数调用返回后相机断开连接,将调用 ACameraDevice_StateCallbacks#onDisconnected,其中 ACameraDevice 处于断开连接状态。

如果在此函数调用返回后相机出现错误,将调用 ACameraDevice_StateCallbacks#onError,其中 ACameraDevice 处于错误状态。

详情
参数
manager
感兴趣的 ACameraManager
cameraId
要打开的相机设备的 ID 字符串。
callback
与打开的相机设备关联的 ACameraDevice_StateCallbacks
device
如果方法调用成功,打开的 ACameraDevice 将在此处填充。
返回值

ACameraManager_registerAvailabilityCallback

camera/NdkCameraManager.h 中声明
camera_status_t ACameraManager_registerAvailabilityCallback(
  ACameraManager *manager,
  const ACameraManager_AvailabilityCallbacks *callback
)

注册相机可用性回调函数。

每当任何相机 API 客户端打开相机设备时,都会调用 onCameraUnavailable。其他相机 API 客户端可能仍能打开此类相机设备,如果它们的优先级高于现有相机设备客户端,则会抢占现有客户端。有关详细信息,请参见 ACameraManager_openCamera

回调将在所有 ACameraManager 实例共享的专用线程上调用。

由于此回调将注册到相机服务,因此在不再需要时请记住取消注册;否则,回调将无限期地继续接收事件,并可能阻止释放其他资源。特别是,回调的调用将独立于一般的 Activity 生命周期,也独立于单个 ACameraManager 实例的状态。

详情
参数
manager
感兴趣的 ACameraManager
callback
返回值

ACameraManager_registerExtendedAvailabilityCallback

camera/NdkCameraManager.h 中声明
camera_status_t ACameraManager_registerExtendedAvailabilityCallback(
  ACameraManager *manager,
  const ACameraManager_ExtendedAvailabilityCallbacks *callback
)

注册相机扩展可用性回调函数。

每当任何相机 API 客户端打开相机设备时,都会调用 onCameraUnavailable。其他相机 API 客户端可能仍能打开此类相机设备,如果它们的优先级高于现有相机设备客户端,则会抢占现有客户端。有关详细信息,请参见 ACameraManager_openCamera

回调将在所有 ACameraManager 实例共享的专用线程上调用。

由于此回调将注册到相机服务,因此在不再需要时请记住取消注册;否则,回调将无限期地继续接收事件,并可能阻止释放其他资源。特别是,回调的调用将独立于一般的 Activity 生命周期,也独立于单个 ACameraManager 实例的状态。

详情
参数
manager
感兴趣的 ACameraManager
callback
返回值

ACameraManager_unregisterAvailabilityCallback

camera/NdkCameraManager.h 中声明
camera_status_t ACameraManager_unregisterAvailabilityCallback(
  ACameraManager *manager,
  const ACameraManager_AvailabilityCallbacks *callback
)

注销相机可用性回调函数。

删除未注册的回调没有效果。

调用此函数时不得持有可用性回调也持有的互斥锁。

详情
参数
manager
感兴趣的 ACameraManager
callback
返回值

ACameraManager_unregisterExtendedAvailabilityCallback

camera/NdkCameraManager.h 中声明
camera_status_t ACameraManager_unregisterExtendedAvailabilityCallback(
  ACameraManager *manager,
  const ACameraManager_ExtendedAvailabilityCallbacks *callback
)

注销相机扩展可用性回调函数。

删除未注册的回调没有效果。

调用此函数时不得持有扩展可用性回调也持有的互斥锁。

详情
参数
manager
感兴趣的 ACameraManager
callback
返回值

ACameraMetadata_copy

声明于 camera/NdkCameraMetadata.h
ACameraMetadata * ACameraMetadata_copy(
  const ACameraMetadata *src
)

创建输入 ACameraMetadata 的副本。

返回的 ACameraMetadata 在应用使用完毕后必须通过 ACameraMetadata_free 释放。

详情
参数
src
要复制的输入 ACameraMetadata
返回值
一个有效的 ACameraMetadata 指针,如果无法复制输入的元数据则为 NULL。

ACameraMetadata_free

声明于 camera/NdkCameraMetadata.h
void ACameraMetadata_free(
  ACameraMetadata *metadata
)

释放 ACameraMetadata 结构体。

详情
参数
metadata
要释放的 ACameraMetadata

ACameraMetadata_fromCameraMetadata

声明于 camera/NdkCameraMetadata.h
ACameraMetadata * ACameraMetadata_fromCameraMetadata(
  JNIEnv *env,
  jobject cameraMetadata
)

返回一个 ACameraMetadata,它引用与 Java API 中的 android.hardware.camera2.CameraMetadata 相同的数据。

(例如,一个 android.hardware.camera2.CameraCharacteristicsandroid.hardware.camera2.CaptureResult)。

返回的 ACameraMetadata 在应用使用完毕后必须通过 ACameraMetadata_free 释放。

ACameraMetadata 维护对底层数据的引用计数,因此它可以独立于 Java 对象使用,并且即使 Java 元数据被垃圾回收,它也仍然有效。

详情
参数
env
JNI 环境。
cameraMetadata
返回值
一个有效的 ACameraMetadata 指针,如果 cameraMetadata 为 null 或不是 android.hardware.camera2.CameraMetadata 的有效实例则为 NULL。

ACameraMetadata_getAllTags

声明于 camera/NdkCameraMetadata.h
camera_status_t ACameraMetadata_getAllTags(
  const ACameraMetadata *metadata,
  int32_t *numEntries,
  const uint32_t **tags
)

列出输入 ACameraMetadata 中的所有条目标签。

详情
参数
metadata
感兴趣的 ACameraMetadata
numEntries
输入 ACameraMetadata 中的元数据条目数量
tags
元数据条目的标签值。标签的长度在 numEntries 参数中返回。内存由 ACameraMetadata 本身管理,应用不得自由/删除。调用 ACameraMetadata_free 后,请勿访问标签。
返回值

ACameraMetadata_getConstEntry

声明于 camera/NdkCameraMetadata.h
camera_status_t ACameraMetadata_getConstEntry(
  const ACameraMetadata *metadata,
  uint32_t tag,
  ACameraMetadata_const_entry *entry
)

从输入 ACameraMetadata 获取元数据条目。

返回条目中数据字段的内存由相机框架管理。不要试图释放它。

详情
参数
metadata
感兴趣的 ACameraMetadata
tag
要获取的相机元数据条目的标签值。
entry
如果方法调用成功,输出的 ACameraMetadata_const_entry 将在此处填充。
返回值

ACameraMetadata_getTagFromName

声明于 camera/NdkCameraMetadata.h
camera_status_t ACameraMetadata_getTagFromName(
  const ACameraMetadata *metadata,
  const char *name,
  uint32_t *tag
)

按名称查找仅适用于特定设备的设备特定自定义标签的标签 ID 值。

标签的名称和类型需要从其他来源发现,例如制造商。ID 值在应用程序的生命周期内是稳定的,但在进程重启后应再次查询。此方法也可用于使用 Java API 中存在的公共标签的名称查询标签值,但是,使用 ndk 中存在的标签值更简单、更快。

详情
参数
metadata
用于查询标签值的 ACameraMetadata
name
正在查询的标签名称。
tag
此方法分配的输出标签。
返回值
仅当函数调用成功时返回 ACAMERA_OK。

ACameraMetadata_isLogicalMultiCamera

声明于 camera/NdkCameraMetadata.h
bool ACameraMetadata_isLogicalMultiCamera(
  const ACameraMetadata *staticMetadata,
  size_t *numPhysicalCameras,
  const char *const **physicalCameraIds
)

辅助函数,用于检查相机是否为逻辑多相机。

根据相机设备的静态元数据检查它是否是逻辑多相机。如果是,则还会返回其物理子相机 ID。

详情
参数
staticMetadata
正在检查的相机的静态元数据。
numPhysicalCameras
返回物理相机的数量。
physicalCameraIds
返回支持此逻辑相机设备的物理相机 ID 数组。请注意,此指针仅在 staticMetadata 对象的生命周期内有效。
返回值
如果是逻辑多相机则为 true,否则为 false。

ACameraOutputTarget_create

camera/NdkCaptureRequest.h 中声明
camera_status_t ACameraOutputTarget_create(
  ANativeWindow *window,
  ACameraOutputTarget **output
)

创建一个 ACameraOutputTarget 对象。

ACameraOutputTarget 用于 ACaptureRequest_addTarget 方法,将输出 ANativeWindow 添加到 ACaptureRequest。在应用不再需要 ACameraOutputTarget 后,使用 ACameraOutputTarget_free 释放对象及其内存。

另请参阅: ACaptureRequest_addTarget

详情
参数
window
输出
如果方法调用成功,输出的 ACameraOutputTarget 将存储在此处。
返回值

ACameraOutputTarget_free

camera/NdkCaptureRequest.h 中声明
void ACameraOutputTarget_free(
  ACameraOutputTarget *output
)

释放 ACameraOutputTarget 对象。

另请参阅: ACameraOutputTarget_create

详情
参数
输出
要释放的 ACameraOutputTarget

ACaptureRequest_addTarget

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_addTarget(
  ACaptureRequest *request,
  const ACameraOutputTarget *output
)

ACameraOutputTarget 对象添加到 ACaptureRequest

详情
参数
request
感兴趣的 ACaptureRequest
输出
要添加到捕获请求的输出 ACameraOutputTarget
返回值

ACaptureRequest_copy

camera/NdkCaptureRequest.h 中声明
ACaptureRequest * ACaptureRequest_copy(
  const ACaptureRequest *src
)

创建输入 ACaptureRequest 的副本。

返回的 ACaptureRequest 在应用使用完毕后必须通过 ACaptureRequest_free 释放。

详情
参数
src
要复制的输入 ACaptureRequest
返回值
一个有效的 ACaptureRequest 指针,如果无法复制输入的请求则为 NULL。

ACaptureRequest_free

camera/NdkCaptureRequest.h 中声明
void ACaptureRequest_free(
  ACaptureRequest *request
)

释放 ACaptureRequest 结构体。

详情
参数
request
要释放的 ACaptureRequest

ACaptureRequest_getAllTags

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_getAllTags(
  const ACaptureRequest *request,
  int32_t *numTags,
  const uint32_t **tags
)

ACaptureRequest_getConstEntry

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_getConstEntry(
  const ACaptureRequest *request,
  uint32_t tag,
  ACameraMetadata_const_entry *entry
)

从输入 ACaptureRequest 获取元数据条目。

返回条目中数据字段的内存由相机框架管理。不要试图释放它。

详情
参数
request
感兴趣的 ACaptureRequest
tag
要获取的相机元数据条目的标签值。
entry
如果方法调用成功,输出的 ACameraMetadata_const_entry 将在此处填充。
返回值

ACaptureRequest_getConstEntry_physicalCamera

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_getConstEntry_physicalCamera(
  const ACaptureRequest *request,
  const char *physicalId,
  uint32_t tag,
  ACameraMetadata_const_entry *entry
)

获取输入 ACaptureRequest 中用于逻辑多相机设备的物理相机的元数据条目。

与 ACaptureRequest_getConstEntry 相同,但如果键包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,此函数将返回 ACaptureRequest_setEntry_physicalCamera_* 类函数在特定物理相机上设置的条目。

详情
参数
request
physicalId
使用 ACameraDevice_createCaptureRequest_withPhysicalIds 创建请求时使用的物理 ID 之一。
tag
由 ACaptureRequest_setEntry_physicalCamera_* 类函数设置的 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中的捕获请求元数据标签。
返回值

ACaptureRequest_getUserContext

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_getUserContext(
  const ACaptureRequest *request,
  void **context
)

获取 ACaptureRequest 的用户上下文指针。

此方法对于用户在捕获会话回调中识别捕获请求很有用。对于新创建的请求,context 为 NULL。

详情
参数
request
感兴趣的 ACaptureRequest
context
此捕获请求的用户 context 指针。
返回值

ACaptureRequest_removeTarget

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_removeTarget(
  ACaptureRequest *request,
  const ACameraOutputTarget *output
)

ACaptureRequest 移除 ACameraOutputTarget 对象。

如果 ACameraOutputTarget 在 ACaptureRequest 中不存在,此方法无效。

详情
参数
request
感兴趣的 ACaptureRequest
输出
要从捕获请求中移除的输出 ACameraOutputTarget
返回值

ACaptureRequest_setEntry_double

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_double(
  ACaptureRequest *request,
  uint32_t tag,
  uint32_t count,
  const double *data
)

使用 double 数据类型设置/更改相机捕获控制条目。

将 count 设置为 0,data 设置为 NULL 以从捕获请求中移除一个标签。

详情
参数
request
感兴趣的 ACaptureRequest
tag
要设置的相机元数据条目的标签值。
count
要在 data 参数中设置的元素数量
data
要在捕获请求中设置/更改的条目。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是 double,或者标签不可由应用控制。

ACaptureRequest_setEntry_float

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_float(
  ACaptureRequest *request,
  uint32_t tag,
  uint32_t count,
  const float *data
)

使用 float 数据类型设置/更改相机捕获控制条目。

将 count 设置为 0,data 设置为 NULL 以从捕获请求中移除一个标签。

详情
参数
request
感兴趣的 ACaptureRequest
tag
要设置的相机元数据条目的标签值。
count
要在 data 参数中设置的元素数量
data
要在捕获请求中设置/更改的条目。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是 float,或者标签不可由应用控制。

ACaptureRequest_setEntry_i32

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_i32(
  ACaptureRequest *request,
  uint32_t tag,
  uint32_t count,
  const int32_t *data
)

使用有符号 32 位数据类型设置/更改相机捕获控制条目。

将 count 设置为 0,data 设置为 NULL 以从捕获请求中移除一个标签。

详情
参数
request
感兴趣的 ACaptureRequest
tag
要设置的相机元数据条目的标签值。
count
要在 data 参数中设置的元素数量
data
要在捕获请求中设置/更改的条目。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是有符号 32 位,或者标签不可由应用控制。

ACaptureRequest_setEntry_i64

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_i64(
  ACaptureRequest *request,
  uint32_t tag,
  uint32_t count,
  const int64_t *data
)

使用有符号 64 位数据类型设置/更改相机捕获控制条目。

将 count 设置为 0,data 设置为 NULL 以从捕获请求中移除一个标签。

详情
参数
request
感兴趣的 ACaptureRequest
tag
要设置的相机元数据条目的标签值。
count
要在 data 参数中设置的元素数量
data
要在捕获请求中设置/更改的条目。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是有符号 64 位,或者标签不可由应用控制。

ACaptureRequest_setEntry_physicalCamera_double

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_physicalCamera_double(
  ACaptureRequest *request,
  const char *physicalId,
  uint32_t tag,
  uint32_t count,
  const double *data
)

使用 double 数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。

与 ACaptureRequest_setEntry_double 相同,但如果 tag 包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,此函数将为支持逻辑多相机的特定物理子相机设置条目。如果 tag 不包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,相机设备将忽略该键。

详情
参数
request
physicalId
使用 ACameraDevice_createCaptureRequest_withPhysicalIds 创建请求时使用的物理 ID 之一。
tag
ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中的捕获请求元数据标签之一。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 或 physicalId 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是 double,标签不可由应用控制,physicalId 不是创建请求时使用的 ID 之一,或者如果捕获请求是没有任何物理 ID 的常规请求。

ACaptureRequest_setEntry_physicalCamera_float

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_physicalCamera_float(
  ACaptureRequest *request,
  const char *physicalId,
  uint32_t tag,
  uint32_t count,
  const float *data
)

使用 float 数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。

与 ACaptureRequest_setEntry_float 相同,但如果 tag 包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,此函数将为支持逻辑多相机的特定物理子相机设置条目。如果 tag 不包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,相机设备将忽略该键。

详情
参数
request
physicalId
使用 ACameraDevice_createCaptureRequest_withPhysicalIds 创建请求时使用的物理 ID 之一。
tag
ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中的捕获请求元数据标签之一。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 或 physicalId 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是 float,标签不可由应用控制,physicalId 不是创建请求时使用的 ID 之一,或者如果捕获请求是没有任何物理 ID 的常规请求。

ACaptureRequest_setEntry_physicalCamera_i32

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_physicalCamera_i32(
  ACaptureRequest *request,
  const char *physicalId,
  uint32_t tag,
  uint32_t count,
  const int32_t *data
)

使用有符号 32 位数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。

与 ACaptureRequest_setEntry_i32 相同,但如果 tag 包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,此函数将为支持逻辑多相机的特定物理子相机设置条目。如果 tag 不包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,相机设备将忽略该键。

详情
参数
request
physicalId
使用 ACameraDevice_createCaptureRequest_withPhysicalIds 创建请求时使用的物理 ID 之一。
tag
ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中的捕获请求元数据标签之一。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 或 physicalId 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是有符号 32 位,标签不可由应用控制,physicalId 不是创建请求时使用的 ID 之一,或者如果捕获请求是没有任何物理 ID 的常规请求。

ACaptureRequest_setEntry_physicalCamera_i64

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_physicalCamera_i64(
  ACaptureRequest *request,
  const char *physicalId,
  uint32_t tag,
  uint32_t count,
  const int64_t *data
)

使用有符号 64 位数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。

与 ACaptureRequest_setEntry_i64 相同,但如果 tag 包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,此函数将为支持逻辑多相机的特定物理子相机设置条目。如果 tag 不包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,相机设备将忽略该键。

详情
参数
request
physicalId
使用 ACameraDevice_createCaptureRequest_withPhysicalIds 创建请求时使用的物理 ID 之一。
tag
ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中的捕获请求元数据标签之一。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 或 physicalId 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是有符号 64 位,标签不可由应用控制,physicalId 不是创建请求时使用的 ID 之一,或者如果捕获请求是没有任何物理 ID 的常规请求。

ACaptureRequest_setEntry_physicalCamera_rational

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_physicalCamera_rational(
  ACaptureRequest *request,
  const char *physicalId,
  uint32_t tag,
  uint32_t count,
  const ACameraMetadata_rational *data
)

使用 rational 数据类型为逻辑多相机设备的物理相机设置/更改相机捕获控制条目。

与 ACaptureRequest_setEntry_rational 相同,但如果 tag 包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,此函数将为支持逻辑多相机的特定物理子相机设置条目。如果 tag 不包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,相机设备将忽略该键。

详情
参数
request
physicalId
使用 ACameraDevice_createCaptureRequest_withPhysicalIds 创建请求时使用的物理 ID 之一。
tag
ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中的捕获请求元数据标签之一。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 或 physicalId 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是 rational,标签不可由应用控制,physicalId 不是创建请求时使用的 ID 之一,或者如果捕获请求是没有任何物理 ID 的常规请求。

ACaptureRequest_setEntry_physicalCamera_u8

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_physicalCamera_u8(
  ACaptureRequest *request,
  const char *physicalId,
  uint32_t tag,
  uint32_t count,
  const uint8_t *data
)

使用无符号 8 位数据类型为支持逻辑多相机的物理相机设置/更改相机捕获控制条目。

与 ACaptureRequest_setEntry_u8 相同,但如果 tag 包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,此函数将为支持逻辑多相机的特定物理子相机设置条目。如果 tag 不包含在 ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中,相机设备将忽略该键。

详情
参数
request
physicalId
使用 ACameraDevice_createCaptureRequest_withPhysicalIds 创建请求时使用的物理 ID 之一。
tag
ACAMERA_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS 中的捕获请求元数据标签之一。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 或 physicalId 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是无符号 8 位,标签不可由应用控制,physicalId 不是创建请求时使用的 ID 之一,或者如果捕获请求是没有任何物理 ID 的常规请求。

ACaptureRequest_setEntry_rational

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_rational(
  ACaptureRequest *request,
  uint32_t tag,
  uint32_t count,
  const ACameraMetadata_rational *data
)

使用 rational 数据类型设置/更改相机捕获控制条目。

将 count 设置为 0,data 设置为 NULL 以从捕获请求中移除一个标签。

详情
参数
request
感兴趣的 ACaptureRequest
tag
要设置的相机元数据条目的标签值。
count
要在 data 参数中设置的元素数量
data
要在捕获请求中设置/更改的条目。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是 rational,或者标签不可由应用控制。

ACaptureRequest_setEntry_u8

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setEntry_u8(
  ACaptureRequest *request,
  uint32_t tag,
  uint32_t count,
  const uint8_t *data
)

使用无符号 8 位数据类型设置/更改相机捕获控制条目。

将 count 设置为 0,data 设置为 NULL 以从捕获请求中移除一个标签。

详情
参数
request
感兴趣的 ACaptureRequest
tag
要设置的相机元数据条目的标签值。
count
要在 data 参数中设置的元素数量
data
要在捕获请求中设置/更改的条目。
返回值
  • 如果方法调用成功,则返回 ACAMERA_OK
  • ACAMERA_ERROR_INVALID_PARAMETER 如果 request 为 NULL,count 大于零而 data 为 NULL,标签的数据类型不是无符号 8 位,或者标签不可由应用控制。

ACaptureRequest_setUserContext

camera/NdkCaptureRequest.h 中声明
camera_status_t ACaptureRequest_setUserContext(
  ACaptureRequest *request,
  void *context
)

将任意用户上下文指针与 ACaptureRequest 关联。

此方法对于用户在捕获会话回调中识别捕获请求很有用。对于新创建的请求,context 为 NULL。ACameraOutputTarget_free 不会释放 context。此外,调用此方法两次不会导致先前的 context 被释放。另请注意,在请求已发送到捕获会话后调用此方法不会更改捕获回调中的 context 指针。

详情
参数
request
感兴趣的 ACaptureRequest
context
要与此捕获请求关联的用户 context 指针。
返回值

ACaptureSessionOutputContainer_add

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionOutputContainer_add(
  ACaptureSessionOutputContainer *container,
  const ACaptureSessionOutput *output
)

ACaptureSessionOutput 对象添加到 ACaptureSessionOutputContainer

详情
参数
container
输出
要添加到 container 的输出 ACaptureSessionOutput
返回值

ACaptureSessionOutputContainer_create

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionOutputContainer_create(
  ACaptureSessionOutputContainer **container
)

创建一个捕获会话输出容器。

container 用于 ACameraDevice_createCaptureSession 方法创建捕获会话。在应用不再需要 ACaptureSessionOutputContainer 后,使用 ACaptureSessionOutputContainer_free 释放 container 及其内存。

详情
参数
container
如果方法调用成功,输出的 ACaptureSessionOutputContainer 将存储在此处。
返回值

ACaptureSessionOutputContainer_free

声明于 camera/NdkCameraDevice.h
void ACaptureSessionOutputContainer_free(
  ACaptureSessionOutputContainer *container
)

释放捕获会话输出容器。

另请参阅: ACaptureSessionOutputContainer_create

详情
参数
container

ACaptureSessionOutputContainer_remove

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionOutputContainer_remove(
  ACaptureSessionOutputContainer *container,
  const ACaptureSessionOutput *output
)

ACaptureSessionOutputContainer 移除 ACameraSessionOutput 对象。

如果 ACaptureSessionOutput 在 ACaptureSessionOutputContainer 中不存在,此方法无效。

详情
参数
container
输出
要从 container 中移除的输出 ACaptureSessionOutput
返回值

ACaptureSessionOutput_create

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionOutput_create(
  ANativeWindow *anw,
  ACaptureSessionOutput **output
)

创建一个 ACameraSessionOutput 对象。

ACaptureSessionOutput 用于 ACaptureSessionOutputContainer_add 方法,将输出 ANativeWindow 添加到 ACaptureSessionOutputContainer。在应用不再需要 ACaptureSessionOutput 后,使用 ACaptureSessionOutput_free 释放对象及其内存。

另请参阅: ACaptureSessionOutputContainer_add

详情
参数
anw
输出
如果方法调用成功,输出的 ACaptureSessionOutput 将存储在此处。
返回值

ACaptureSessionOutput_free

声明于 camera/NdkCameraDevice.h
void ACaptureSessionOutput_free(
  ACaptureSessionOutput *output
)

释放 ACameraSessionOutput 对象。

另请参阅: ACaptureSessionOutput_create

详情
参数
输出
要释放的 ACaptureSessionOutput

ACaptureSessionPhysicalOutput_create

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionPhysicalOutput_create(
  ANativeWindow *anw,
  const char *physicalId,
  ACaptureSessionOutput **output
)

创建一个 ACaptureSessionOutput 对象,用于从作为逻辑相机设备一部分的物理相机进行流式传输。

ACaptureSessionOutput 用于 ACaptureSessionOutputContainer_add 方法,将输出 ANativeWindow 添加到 ACaptureSessionOutputContainer。在应用不再需要 ACaptureSessionOutput 后,使用 ACaptureSessionOutput_free 释放对象及其内存。

另请参阅: ACaptureSessionOutputContainer_add

详情
参数
anw
physicalId
此输出关联的物理相机 ID。
输出
如果方法调用成功,输出的 ACaptureSessionOutput 将存储在此处。
返回值

ACaptureSessionSharedOutput_add

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionSharedOutput_add(
  ACaptureSessionOutput *output,
  ANativeWindow *anw
)

向共享的 ACaptureSessionOutput 添加一个本地窗口。

ACaptureSessionOutput 必须通过 ACaptureSessionSharedOutput_create 创建。

详情
参数
输出
要扩展的共享 ACaptureSessionOutput。
anw
新的 native window。
返回值

ACaptureSessionSharedOutput_create

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionSharedOutput_create(
  ANativeWindow *anw,
  ACaptureSessionOutput **output
)

创建一个共享的 ACaptureSessionOutput 对象。

ACaptureSessionOutput 用于 ACaptureSessionOutputContainer_add 方法,将输出 ANativeWindow 添加到 ACaptureSessionOutputContainer。在应用不再需要 ACaptureSessionOutput 后,使用 ACaptureSessionOutput_free 释放对象及其内存。共享的 ACaptureSessionOutput 可以通过 ACaptureSessionSharedOutput_addACaptureSessionSharedOutput_remove 进一步修改,并且必须通过 ACameraCaptureSession_updateSharedOutput 更新。

另请参阅: ACaptureSessionOutputContainer_add

详情
参数
anw
输出
如果方法调用成功,输出的 ACaptureSessionOutput 将存储在此处。
返回值

ACaptureSessionSharedOutput_remove

声明于 camera/NdkCameraDevice.h
camera_status_t ACaptureSessionSharedOutput_remove(
  ACaptureSessionOutput *output,
  ANativeWindow *anw
)

从共享的 ACaptureSessionOutput 移除一个本地窗口。

详情
参数
输出
要修改的 ACaptureSessionOutput
anw
要移除的 native window。
返回值