android: capabilities: Make keys list into set and member variable
We need to be able to add additional characteristics/request/result keys into the corresponding list in the static metadata based on libcamera camera capabilities. We also need to be able to easily check if the lists have specific keys, for populating templates and result metadata. Turn the characteristics, requests, and results keys vectors into sets, and move them to member variables to achieve this. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
6b444acf46
commit
822d9e61fa
2 changed files with 141 additions and 130 deletions
|
@ -655,6 +655,136 @@ int CameraCapabilities::initializeStaticMetadata()
|
|||
const ControlInfoMap &controlsInfo = camera_->controls();
|
||||
const ControlList &properties = camera_->properties();
|
||||
|
||||
availableCharacteristicsKeys_ = {
|
||||
ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
|
||||
ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
|
||||
ANDROID_CONTROL_AE_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
|
||||
ANDROID_CONTROL_AE_COMPENSATION_RANGE,
|
||||
ANDROID_CONTROL_AE_COMPENSATION_STEP,
|
||||
ANDROID_CONTROL_AE_LOCK_AVAILABLE,
|
||||
ANDROID_CONTROL_AF_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AVAILABLE_EFFECTS,
|
||||
ANDROID_CONTROL_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AVAILABLE_SCENE_MODES,
|
||||
ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
|
||||
ANDROID_CONTROL_AWB_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
|
||||
ANDROID_CONTROL_MAX_REGIONS,
|
||||
ANDROID_CONTROL_SCENE_MODE_OVERRIDES,
|
||||
ANDROID_FLASH_INFO_AVAILABLE,
|
||||
ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
|
||||
ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
|
||||
ANDROID_JPEG_MAX_SIZE,
|
||||
ANDROID_LENS_FACING,
|
||||
ANDROID_LENS_INFO_AVAILABLE_APERTURES,
|
||||
ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,
|
||||
ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,
|
||||
ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
|
||||
ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
|
||||
ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,
|
||||
ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
|
||||
ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS,
|
||||
ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
|
||||
ANDROID_REQUEST_PARTIAL_RESULT_COUNT,
|
||||
ANDROID_REQUEST_PIPELINE_MAX_DEPTH,
|
||||
ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
|
||||
ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
|
||||
ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,
|
||||
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
|
||||
ANDROID_SCALER_CROPPING_TYPE,
|
||||
ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,
|
||||
ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
|
||||
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
|
||||
ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
|
||||
ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,
|
||||
ANDROID_SENSOR_INFO_PHYSICAL_SIZE,
|
||||
ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
|
||||
ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
|
||||
ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,
|
||||
ANDROID_SENSOR_ORIENTATION,
|
||||
ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,
|
||||
ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,
|
||||
ANDROID_SYNC_MAX_LATENCY,
|
||||
};
|
||||
|
||||
availableRequestKeys_ = {
|
||||
ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
|
||||
ANDROID_CONTROL_AE_ANTIBANDING_MODE,
|
||||
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
|
||||
ANDROID_CONTROL_AE_LOCK,
|
||||
ANDROID_CONTROL_AE_MODE,
|
||||
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
|
||||
ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
|
||||
ANDROID_CONTROL_AF_MODE,
|
||||
ANDROID_CONTROL_AF_TRIGGER,
|
||||
ANDROID_CONTROL_AWB_LOCK,
|
||||
ANDROID_CONTROL_AWB_MODE,
|
||||
ANDROID_CONTROL_CAPTURE_INTENT,
|
||||
ANDROID_CONTROL_EFFECT_MODE,
|
||||
ANDROID_CONTROL_MODE,
|
||||
ANDROID_CONTROL_SCENE_MODE,
|
||||
ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
|
||||
ANDROID_FLASH_MODE,
|
||||
ANDROID_JPEG_ORIENTATION,
|
||||
ANDROID_JPEG_QUALITY,
|
||||
ANDROID_JPEG_THUMBNAIL_QUALITY,
|
||||
ANDROID_JPEG_THUMBNAIL_SIZE,
|
||||
ANDROID_LENS_APERTURE,
|
||||
ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
|
||||
ANDROID_NOISE_REDUCTION_MODE,
|
||||
ANDROID_SCALER_CROP_REGION,
|
||||
ANDROID_STATISTICS_FACE_DETECT_MODE
|
||||
};
|
||||
|
||||
availableResultKeys_ = {
|
||||
ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
|
||||
ANDROID_CONTROL_AE_ANTIBANDING_MODE,
|
||||
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
|
||||
ANDROID_CONTROL_AE_LOCK,
|
||||
ANDROID_CONTROL_AE_MODE,
|
||||
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
|
||||
ANDROID_CONTROL_AE_STATE,
|
||||
ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
|
||||
ANDROID_CONTROL_AF_MODE,
|
||||
ANDROID_CONTROL_AF_STATE,
|
||||
ANDROID_CONTROL_AF_TRIGGER,
|
||||
ANDROID_CONTROL_AWB_LOCK,
|
||||
ANDROID_CONTROL_AWB_MODE,
|
||||
ANDROID_CONTROL_AWB_STATE,
|
||||
ANDROID_CONTROL_CAPTURE_INTENT,
|
||||
ANDROID_CONTROL_EFFECT_MODE,
|
||||
ANDROID_CONTROL_MODE,
|
||||
ANDROID_CONTROL_SCENE_MODE,
|
||||
ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
|
||||
ANDROID_FLASH_MODE,
|
||||
ANDROID_FLASH_STATE,
|
||||
ANDROID_JPEG_GPS_COORDINATES,
|
||||
ANDROID_JPEG_GPS_PROCESSING_METHOD,
|
||||
ANDROID_JPEG_GPS_TIMESTAMP,
|
||||
ANDROID_JPEG_ORIENTATION,
|
||||
ANDROID_JPEG_QUALITY,
|
||||
ANDROID_JPEG_SIZE,
|
||||
ANDROID_JPEG_THUMBNAIL_QUALITY,
|
||||
ANDROID_JPEG_THUMBNAIL_SIZE,
|
||||
ANDROID_LENS_APERTURE,
|
||||
ANDROID_LENS_FOCAL_LENGTH,
|
||||
ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
|
||||
ANDROID_LENS_STATE,
|
||||
ANDROID_NOISE_REDUCTION_MODE,
|
||||
ANDROID_REQUEST_PIPELINE_DEPTH,
|
||||
ANDROID_SCALER_CROP_REGION,
|
||||
ANDROID_SENSOR_EXPOSURE_TIME,
|
||||
ANDROID_SENSOR_FRAME_DURATION,
|
||||
ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,
|
||||
ANDROID_SENSOR_TEST_PATTERN_MODE,
|
||||
ANDROID_SENSOR_TIMESTAMP,
|
||||
ANDROID_STATISTICS_FACE_DETECT_MODE,
|
||||
ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
|
||||
ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
|
||||
ANDROID_STATISTICS_SCENE_FLICKER,
|
||||
};
|
||||
|
||||
/* Color correction static metadata. */
|
||||
{
|
||||
std::vector<uint8_t> data;
|
||||
|
@ -1151,141 +1281,17 @@ int CameraCapabilities::initializeStaticMetadata()
|
|||
LOG(HAL, Info)
|
||||
<< "Hardware level: " << hwLevelStrings.find(hwLevel_)->second;
|
||||
|
||||
std::vector<int32_t> availableCharacteristicsKeys = {
|
||||
ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,
|
||||
ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,
|
||||
ANDROID_CONTROL_AE_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,
|
||||
ANDROID_CONTROL_AE_COMPENSATION_RANGE,
|
||||
ANDROID_CONTROL_AE_COMPENSATION_STEP,
|
||||
ANDROID_CONTROL_AE_LOCK_AVAILABLE,
|
||||
ANDROID_CONTROL_AF_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AVAILABLE_EFFECTS,
|
||||
ANDROID_CONTROL_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AVAILABLE_SCENE_MODES,
|
||||
ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
|
||||
ANDROID_CONTROL_AWB_AVAILABLE_MODES,
|
||||
ANDROID_CONTROL_AWB_LOCK_AVAILABLE,
|
||||
ANDROID_CONTROL_MAX_REGIONS,
|
||||
ANDROID_CONTROL_SCENE_MODE_OVERRIDES,
|
||||
ANDROID_FLASH_INFO_AVAILABLE,
|
||||
ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,
|
||||
ANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,
|
||||
ANDROID_JPEG_MAX_SIZE,
|
||||
ANDROID_LENS_FACING,
|
||||
ANDROID_LENS_INFO_AVAILABLE_APERTURES,
|
||||
ANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,
|
||||
ANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,
|
||||
ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
|
||||
ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
|
||||
ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,
|
||||
ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
|
||||
ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS,
|
||||
ANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,
|
||||
ANDROID_REQUEST_PARTIAL_RESULT_COUNT,
|
||||
ANDROID_REQUEST_PIPELINE_MAX_DEPTH,
|
||||
ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,
|
||||
ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,
|
||||
ANDROID_SCALER_AVAILABLE_STALL_DURATIONS,
|
||||
ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,
|
||||
ANDROID_SCALER_CROPPING_TYPE,
|
||||
ANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,
|
||||
ANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,
|
||||
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,
|
||||
ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
|
||||
ANDROID_SENSOR_INFO_MAX_FRAME_DURATION,
|
||||
ANDROID_SENSOR_INFO_PHYSICAL_SIZE,
|
||||
ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,
|
||||
ANDROID_SENSOR_INFO_SENSITIVITY_RANGE,
|
||||
ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,
|
||||
ANDROID_SENSOR_ORIENTATION,
|
||||
ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,
|
||||
ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,
|
||||
ANDROID_SYNC_MAX_LATENCY,
|
||||
};
|
||||
staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,
|
||||
availableCharacteristicsKeys);
|
||||
std::vector<int32_t>(availableCharacteristicsKeys_.begin(),
|
||||
availableCharacteristicsKeys_.end()));
|
||||
|
||||
std::vector<int32_t> availableRequestKeys = {
|
||||
ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
|
||||
ANDROID_CONTROL_AE_ANTIBANDING_MODE,
|
||||
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
|
||||
ANDROID_CONTROL_AE_LOCK,
|
||||
ANDROID_CONTROL_AE_MODE,
|
||||
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
|
||||
ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
|
||||
ANDROID_CONTROL_AF_MODE,
|
||||
ANDROID_CONTROL_AF_TRIGGER,
|
||||
ANDROID_CONTROL_AWB_LOCK,
|
||||
ANDROID_CONTROL_AWB_MODE,
|
||||
ANDROID_CONTROL_CAPTURE_INTENT,
|
||||
ANDROID_CONTROL_EFFECT_MODE,
|
||||
ANDROID_CONTROL_MODE,
|
||||
ANDROID_CONTROL_SCENE_MODE,
|
||||
ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
|
||||
ANDROID_FLASH_MODE,
|
||||
ANDROID_JPEG_ORIENTATION,
|
||||
ANDROID_JPEG_QUALITY,
|
||||
ANDROID_JPEG_THUMBNAIL_QUALITY,
|
||||
ANDROID_JPEG_THUMBNAIL_SIZE,
|
||||
ANDROID_LENS_APERTURE,
|
||||
ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
|
||||
ANDROID_NOISE_REDUCTION_MODE,
|
||||
ANDROID_SCALER_CROP_REGION,
|
||||
ANDROID_STATISTICS_FACE_DETECT_MODE
|
||||
};
|
||||
staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,
|
||||
availableRequestKeys);
|
||||
std::vector<int32_t>(availableRequestKeys_.begin(),
|
||||
availableRequestKeys_.end()));
|
||||
|
||||
std::vector<int32_t> availableResultKeys = {
|
||||
ANDROID_COLOR_CORRECTION_ABERRATION_MODE,
|
||||
ANDROID_CONTROL_AE_ANTIBANDING_MODE,
|
||||
ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,
|
||||
ANDROID_CONTROL_AE_LOCK,
|
||||
ANDROID_CONTROL_AE_MODE,
|
||||
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
|
||||
ANDROID_CONTROL_AE_STATE,
|
||||
ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
|
||||
ANDROID_CONTROL_AF_MODE,
|
||||
ANDROID_CONTROL_AF_STATE,
|
||||
ANDROID_CONTROL_AF_TRIGGER,
|
||||
ANDROID_CONTROL_AWB_LOCK,
|
||||
ANDROID_CONTROL_AWB_MODE,
|
||||
ANDROID_CONTROL_AWB_STATE,
|
||||
ANDROID_CONTROL_CAPTURE_INTENT,
|
||||
ANDROID_CONTROL_EFFECT_MODE,
|
||||
ANDROID_CONTROL_MODE,
|
||||
ANDROID_CONTROL_SCENE_MODE,
|
||||
ANDROID_CONTROL_VIDEO_STABILIZATION_MODE,
|
||||
ANDROID_FLASH_MODE,
|
||||
ANDROID_FLASH_STATE,
|
||||
ANDROID_JPEG_GPS_COORDINATES,
|
||||
ANDROID_JPEG_GPS_PROCESSING_METHOD,
|
||||
ANDROID_JPEG_GPS_TIMESTAMP,
|
||||
ANDROID_JPEG_ORIENTATION,
|
||||
ANDROID_JPEG_QUALITY,
|
||||
ANDROID_JPEG_SIZE,
|
||||
ANDROID_JPEG_THUMBNAIL_QUALITY,
|
||||
ANDROID_JPEG_THUMBNAIL_SIZE,
|
||||
ANDROID_LENS_APERTURE,
|
||||
ANDROID_LENS_FOCAL_LENGTH,
|
||||
ANDROID_LENS_OPTICAL_STABILIZATION_MODE,
|
||||
ANDROID_LENS_STATE,
|
||||
ANDROID_NOISE_REDUCTION_MODE,
|
||||
ANDROID_REQUEST_PIPELINE_DEPTH,
|
||||
ANDROID_SCALER_CROP_REGION,
|
||||
ANDROID_SENSOR_EXPOSURE_TIME,
|
||||
ANDROID_SENSOR_FRAME_DURATION,
|
||||
ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,
|
||||
ANDROID_SENSOR_TEST_PATTERN_MODE,
|
||||
ANDROID_SENSOR_TIMESTAMP,
|
||||
ANDROID_STATISTICS_FACE_DETECT_MODE,
|
||||
ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
|
||||
ANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,
|
||||
ANDROID_STATISTICS_SCENE_FLICKER,
|
||||
};
|
||||
staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_RESULT_KEYS,
|
||||
availableResultKeys);
|
||||
std::vector<int32_t>(availableResultKeys_.begin(),
|
||||
availableResultKeys_.end()));
|
||||
|
||||
if (!staticMetadata_->isValid()) {
|
||||
LOG(HAL, Error) << "Failed to construct static metadata";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue