[{"id":18329,"web_url":"https://patchwork.libcamera.org/comment/18329/","msgid":"<YPy3nP6PuEQPTfje@pendragon.ideasonboard.com>","date":"2021-07-25T01:00:12","subject":"Re: [libcamera-devel] [PATCH v5 7/9] android: capabilities: Make\n\tkeys list into set and member variable","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Tue, Jul 20, 2021 at 07:13:05PM +0900, Paul Elder wrote:\n> We need to be able to add additional characteristics/request/result keys\n> into the corresponding list in the static metadata based on libcamera\n> camera capabilities. We also need to be able to easily check if the\n> lists have specific keys, for populating templates and result metadata.\n> \n> Turn the characteristics, requests, and results keys vectors into sets,\n> and move them to member variables to achieve this.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/android/camera_capabilities.cpp | 266 ++++++++++++++--------------\n>  src/android/camera_capabilities.h   |   5 +\n>  2 files changed, 141 insertions(+), 130 deletions(-)\n> \n> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> index a8fa7ffe..4048a94b 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -666,6 +666,136 @@ int CameraCapabilities::initializeStaticMetadata()\n>  \tconst ControlInfoMap &controlsInfo = camera_->controls();\n>  \tconst ControlList &properties = camera_->properties();\n>  \n> +\tavailableCharacteristicsKeys_ = {\n> +\t\tANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,\n> +\t\tANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,\n> +\t\tANDROID_CONTROL_AE_AVAILABLE_MODES,\n> +\t\tANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,\n> +\t\tANDROID_CONTROL_AE_COMPENSATION_RANGE,\n> +\t\tANDROID_CONTROL_AE_COMPENSATION_STEP,\n> +\t\tANDROID_CONTROL_AE_LOCK_AVAILABLE,\n> +\t\tANDROID_CONTROL_AF_AVAILABLE_MODES,\n> +\t\tANDROID_CONTROL_AVAILABLE_EFFECTS,\n> +\t\tANDROID_CONTROL_AVAILABLE_MODES,\n> +\t\tANDROID_CONTROL_AVAILABLE_SCENE_MODES,\n> +\t\tANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,\n> +\t\tANDROID_CONTROL_AWB_AVAILABLE_MODES,\n> +\t\tANDROID_CONTROL_AWB_LOCK_AVAILABLE,\n> +\t\tANDROID_CONTROL_MAX_REGIONS,\n> +\t\tANDROID_CONTROL_SCENE_MODE_OVERRIDES,\n> +\t\tANDROID_FLASH_INFO_AVAILABLE,\n> +\t\tANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,\n> +\t\tANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,\n> +\t\tANDROID_JPEG_MAX_SIZE,\n> +\t\tANDROID_LENS_FACING,\n> +\t\tANDROID_LENS_INFO_AVAILABLE_APERTURES,\n> +\t\tANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,\n> +\t\tANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,\n> +\t\tANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,\n> +\t\tANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,\n> +\t\tANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,\n> +\t\tANDROID_REQUEST_AVAILABLE_CAPABILITIES,\n> +\t\tANDROID_REQUEST_MAX_NUM_INPUT_STREAMS,\n> +\t\tANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,\n> +\t\tANDROID_REQUEST_PARTIAL_RESULT_COUNT,\n> +\t\tANDROID_REQUEST_PIPELINE_MAX_DEPTH,\n> +\t\tANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,\n> +\t\tANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,\n> +\t\tANDROID_SCALER_AVAILABLE_STALL_DURATIONS,\n> +\t\tANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,\n> +\t\tANDROID_SCALER_CROPPING_TYPE,\n> +\t\tANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,\n> +\t\tANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,\n> +\t\tANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,\n> +\t\tANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,\n> +\t\tANDROID_SENSOR_INFO_MAX_FRAME_DURATION,\n> +\t\tANDROID_SENSOR_INFO_PHYSICAL_SIZE,\n> +\t\tANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,\n> +\t\tANDROID_SENSOR_INFO_SENSITIVITY_RANGE,\n> +\t\tANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,\n> +\t\tANDROID_SENSOR_ORIENTATION,\n> +\t\tANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,\n> +\t\tANDROID_STATISTICS_INFO_MAX_FACE_COUNT,\n> +\t\tANDROID_SYNC_MAX_LATENCY,\n> +\t};\n> +\n> +\tavailableRequestKeys_ = {\n> +\t\tANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> +\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> +\t\tANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n> +\t\tANDROID_CONTROL_AE_LOCK,\n> +\t\tANDROID_CONTROL_AE_MODE,\n> +\t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> +\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\tANDROID_CONTROL_AF_MODE,\n> +\t\tANDROID_CONTROL_AF_TRIGGER,\n> +\t\tANDROID_CONTROL_AWB_LOCK,\n> +\t\tANDROID_CONTROL_AWB_MODE,\n> +\t\tANDROID_CONTROL_CAPTURE_INTENT,\n> +\t\tANDROID_CONTROL_EFFECT_MODE,\n> +\t\tANDROID_CONTROL_MODE,\n> +\t\tANDROID_CONTROL_SCENE_MODE,\n> +\t\tANDROID_CONTROL_VIDEO_STABILIZATION_MODE,\n> +\t\tANDROID_FLASH_MODE,\n> +\t\tANDROID_JPEG_ORIENTATION,\n> +\t\tANDROID_JPEG_QUALITY,\n> +\t\tANDROID_JPEG_THUMBNAIL_QUALITY,\n> +\t\tANDROID_JPEG_THUMBNAIL_SIZE,\n> +\t\tANDROID_LENS_APERTURE,\n> +\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> +\t\tANDROID_NOISE_REDUCTION_MODE,\n> +\t\tANDROID_SCALER_CROP_REGION,\n> +\t\tANDROID_STATISTICS_FACE_DETECT_MODE\n> +\t};\n> +\n> +\tavailableResultKeys_ = {\n> +\t\tANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> +\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> +\t\tANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n> +\t\tANDROID_CONTROL_AE_LOCK,\n> +\t\tANDROID_CONTROL_AE_MODE,\n> +\t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> +\t\tANDROID_CONTROL_AE_STATE,\n> +\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\tANDROID_CONTROL_AF_MODE,\n> +\t\tANDROID_CONTROL_AF_STATE,\n> +\t\tANDROID_CONTROL_AF_TRIGGER,\n> +\t\tANDROID_CONTROL_AWB_LOCK,\n> +\t\tANDROID_CONTROL_AWB_MODE,\n> +\t\tANDROID_CONTROL_AWB_STATE,\n> +\t\tANDROID_CONTROL_CAPTURE_INTENT,\n> +\t\tANDROID_CONTROL_EFFECT_MODE,\n> +\t\tANDROID_CONTROL_MODE,\n> +\t\tANDROID_CONTROL_SCENE_MODE,\n> +\t\tANDROID_CONTROL_VIDEO_STABILIZATION_MODE,\n> +\t\tANDROID_FLASH_MODE,\n> +\t\tANDROID_FLASH_STATE,\n> +\t\tANDROID_JPEG_GPS_COORDINATES,\n> +\t\tANDROID_JPEG_GPS_PROCESSING_METHOD,\n> +\t\tANDROID_JPEG_GPS_TIMESTAMP,\n> +\t\tANDROID_JPEG_ORIENTATION,\n> +\t\tANDROID_JPEG_QUALITY,\n> +\t\tANDROID_JPEG_SIZE,\n> +\t\tANDROID_JPEG_THUMBNAIL_QUALITY,\n> +\t\tANDROID_JPEG_THUMBNAIL_SIZE,\n> +\t\tANDROID_LENS_APERTURE,\n> +\t\tANDROID_LENS_FOCAL_LENGTH,\n> +\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> +\t\tANDROID_LENS_STATE,\n> +\t\tANDROID_NOISE_REDUCTION_MODE,\n> +\t\tANDROID_REQUEST_PIPELINE_DEPTH,\n> +\t\tANDROID_SCALER_CROP_REGION,\n> +\t\tANDROID_SENSOR_EXPOSURE_TIME,\n> +\t\tANDROID_SENSOR_FRAME_DURATION,\n> +\t\tANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n> +\t\tANDROID_SENSOR_TEST_PATTERN_MODE,\n> +\t\tANDROID_SENSOR_TIMESTAMP,\n> +\t\tANDROID_STATISTICS_FACE_DETECT_MODE,\n> +\t\tANDROID_STATISTICS_LENS_SHADING_MAP_MODE,\n> +\t\tANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,\n> +\t\tANDROID_STATISTICS_SCENE_FLICKER,\n> +\t};\n> +\n>  \t/* Color correction static metadata. */\n>  \t{\n>  \t\tstd::vector<uint8_t> data;\n> @@ -1162,141 +1292,17 @@ int CameraCapabilities::initializeStaticMetadata()\n>  \t\t<< \"Hardware level: \"\n>  \t\t<< hwLevelStrings.find((camera_metadata_enum_android_info_supported_hardware_level)hwLevel)->second;\n>  \n> -\tstd::vector<int32_t> availableCharacteristicsKeys = {\n> -\t\tANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES,\n> -\t\tANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES,\n> -\t\tANDROID_CONTROL_AE_AVAILABLE_MODES,\n> -\t\tANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,\n> -\t\tANDROID_CONTROL_AE_COMPENSATION_RANGE,\n> -\t\tANDROID_CONTROL_AE_COMPENSATION_STEP,\n> -\t\tANDROID_CONTROL_AE_LOCK_AVAILABLE,\n> -\t\tANDROID_CONTROL_AF_AVAILABLE_MODES,\n> -\t\tANDROID_CONTROL_AVAILABLE_EFFECTS,\n> -\t\tANDROID_CONTROL_AVAILABLE_MODES,\n> -\t\tANDROID_CONTROL_AVAILABLE_SCENE_MODES,\n> -\t\tANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,\n> -\t\tANDROID_CONTROL_AWB_AVAILABLE_MODES,\n> -\t\tANDROID_CONTROL_AWB_LOCK_AVAILABLE,\n> -\t\tANDROID_CONTROL_MAX_REGIONS,\n> -\t\tANDROID_CONTROL_SCENE_MODE_OVERRIDES,\n> -\t\tANDROID_FLASH_INFO_AVAILABLE,\n> -\t\tANDROID_INFO_SUPPORTED_HARDWARE_LEVEL,\n> -\t\tANDROID_JPEG_AVAILABLE_THUMBNAIL_SIZES,\n> -\t\tANDROID_JPEG_MAX_SIZE,\n> -\t\tANDROID_LENS_FACING,\n> -\t\tANDROID_LENS_INFO_AVAILABLE_APERTURES,\n> -\t\tANDROID_LENS_INFO_AVAILABLE_FOCAL_LENGTHS,\n> -\t\tANDROID_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION,\n> -\t\tANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,\n> -\t\tANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,\n> -\t\tANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,\n> -\t\tANDROID_REQUEST_AVAILABLE_CAPABILITIES,\n> -\t\tANDROID_REQUEST_MAX_NUM_INPUT_STREAMS,\n> -\t\tANDROID_REQUEST_MAX_NUM_OUTPUT_STREAMS,\n> -\t\tANDROID_REQUEST_PARTIAL_RESULT_COUNT,\n> -\t\tANDROID_REQUEST_PIPELINE_MAX_DEPTH,\n> -\t\tANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM,\n> -\t\tANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS,\n> -\t\tANDROID_SCALER_AVAILABLE_STALL_DURATIONS,\n> -\t\tANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS,\n> -\t\tANDROID_SCALER_CROPPING_TYPE,\n> -\t\tANDROID_SENSOR_AVAILABLE_TEST_PATTERN_MODES,\n> -\t\tANDROID_SENSOR_INFO_ACTIVE_ARRAY_SIZE,\n> -\t\tANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT,\n> -\t\tANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,\n> -\t\tANDROID_SENSOR_INFO_MAX_FRAME_DURATION,\n> -\t\tANDROID_SENSOR_INFO_PHYSICAL_SIZE,\n> -\t\tANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE,\n> -\t\tANDROID_SENSOR_INFO_SENSITIVITY_RANGE,\n> -\t\tANDROID_SENSOR_INFO_TIMESTAMP_SOURCE,\n> -\t\tANDROID_SENSOR_ORIENTATION,\n> -\t\tANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES,\n> -\t\tANDROID_STATISTICS_INFO_MAX_FACE_COUNT,\n> -\t\tANDROID_SYNC_MAX_LATENCY,\n> -\t};\n>  \tstaticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,\n> -\t\t\t\t  availableCharacteristicsKeys);\n> +\t\t\t\t  std::vector<int32_t>(availableCharacteristicsKeys_.begin(),\n> +\t\t\t\t\t\t       availableCharacteristicsKeys_.end()));\n>  \n> -\tstd::vector<int32_t> availableRequestKeys = {\n> -\t\tANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> -\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> -\t\tANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n> -\t\tANDROID_CONTROL_AE_LOCK,\n> -\t\tANDROID_CONTROL_AE_MODE,\n> -\t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> -\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> -\t\tANDROID_CONTROL_AF_MODE,\n> -\t\tANDROID_CONTROL_AF_TRIGGER,\n> -\t\tANDROID_CONTROL_AWB_LOCK,\n> -\t\tANDROID_CONTROL_AWB_MODE,\n> -\t\tANDROID_CONTROL_CAPTURE_INTENT,\n> -\t\tANDROID_CONTROL_EFFECT_MODE,\n> -\t\tANDROID_CONTROL_MODE,\n> -\t\tANDROID_CONTROL_SCENE_MODE,\n> -\t\tANDROID_CONTROL_VIDEO_STABILIZATION_MODE,\n> -\t\tANDROID_FLASH_MODE,\n> -\t\tANDROID_JPEG_ORIENTATION,\n> -\t\tANDROID_JPEG_QUALITY,\n> -\t\tANDROID_JPEG_THUMBNAIL_QUALITY,\n> -\t\tANDROID_JPEG_THUMBNAIL_SIZE,\n> -\t\tANDROID_LENS_APERTURE,\n> -\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> -\t\tANDROID_NOISE_REDUCTION_MODE,\n> -\t\tANDROID_SCALER_CROP_REGION,\n> -\t\tANDROID_STATISTICS_FACE_DETECT_MODE\n> -\t};\n>  \tstaticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,\n> -\t\t\t\t  availableRequestKeys);\n> +\t\t\t\t  std::vector<int32_t>(availableRequestKeys_.begin(),\n> +\t\t\t\t\t\t       availableRequestKeys_.end()));\n>  \n> -\tstd::vector<int32_t> availableResultKeys = {\n> -\t\tANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> -\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> -\t\tANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n> -\t\tANDROID_CONTROL_AE_LOCK,\n> -\t\tANDROID_CONTROL_AE_MODE,\n> -\t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> -\t\tANDROID_CONTROL_AE_STATE,\n> -\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> -\t\tANDROID_CONTROL_AF_MODE,\n> -\t\tANDROID_CONTROL_AF_STATE,\n> -\t\tANDROID_CONTROL_AF_TRIGGER,\n> -\t\tANDROID_CONTROL_AWB_LOCK,\n> -\t\tANDROID_CONTROL_AWB_MODE,\n> -\t\tANDROID_CONTROL_AWB_STATE,\n> -\t\tANDROID_CONTROL_CAPTURE_INTENT,\n> -\t\tANDROID_CONTROL_EFFECT_MODE,\n> -\t\tANDROID_CONTROL_MODE,\n> -\t\tANDROID_CONTROL_SCENE_MODE,\n> -\t\tANDROID_CONTROL_VIDEO_STABILIZATION_MODE,\n> -\t\tANDROID_FLASH_MODE,\n> -\t\tANDROID_FLASH_STATE,\n> -\t\tANDROID_JPEG_GPS_COORDINATES,\n> -\t\tANDROID_JPEG_GPS_PROCESSING_METHOD,\n> -\t\tANDROID_JPEG_GPS_TIMESTAMP,\n> -\t\tANDROID_JPEG_ORIENTATION,\n> -\t\tANDROID_JPEG_QUALITY,\n> -\t\tANDROID_JPEG_SIZE,\n> -\t\tANDROID_JPEG_THUMBNAIL_QUALITY,\n> -\t\tANDROID_JPEG_THUMBNAIL_SIZE,\n> -\t\tANDROID_LENS_APERTURE,\n> -\t\tANDROID_LENS_FOCAL_LENGTH,\n> -\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> -\t\tANDROID_LENS_STATE,\n> -\t\tANDROID_NOISE_REDUCTION_MODE,\n> -\t\tANDROID_REQUEST_PIPELINE_DEPTH,\n> -\t\tANDROID_SCALER_CROP_REGION,\n> -\t\tANDROID_SENSOR_EXPOSURE_TIME,\n> -\t\tANDROID_SENSOR_FRAME_DURATION,\n> -\t\tANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n> -\t\tANDROID_SENSOR_TEST_PATTERN_MODE,\n> -\t\tANDROID_SENSOR_TIMESTAMP,\n> -\t\tANDROID_STATISTICS_FACE_DETECT_MODE,\n> -\t\tANDROID_STATISTICS_LENS_SHADING_MAP_MODE,\n> -\t\tANDROID_STATISTICS_HOT_PIXEL_MAP_MODE,\n> -\t\tANDROID_STATISTICS_SCENE_FLICKER,\n> -\t};\n>  \tstaticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_RESULT_KEYS,\n> -\t\t\t\t  availableResultKeys);\n> +\t\t\t\t  std::vector<int32_t>(availableResultKeys_.begin(),\n> +\t\t\t\t\t\t       availableResultKeys_.end()));\n>  \n>  \tif (!staticMetadata_->isValid()) {\n>  \t\tLOG(HAL, Error) << \"Failed to construct static metadata\";\n> diff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h\n> index 6ef81714..e0c2786b 100644\n> --- a/src/android/camera_capabilities.h\n> +++ b/src/android/camera_capabilities.h\n> @@ -9,6 +9,7 @@\n>  \n>  #include <map>\n>  #include <memory>\n> +#include <set>\n>  #include <vector>\n>  \n>  #include <libcamera/base/class.h>\n> @@ -73,6 +74,10 @@ private:\n>  \tstd::map<int, libcamera::PixelFormat> formatsMap_;\n>  \tstd::unique_ptr<CameraMetadata> staticMetadata_;\n>  \tunsigned int maxJpegBufferSize_;\n> +\n> +\tstd::set<int32_t> availableCharacteristicsKeys_;\n> +\tstd::set<int32_t> availableRequestKeys_;\n> +\tstd::set<int32_t> availableResultKeys_;\n>  };\n>  \n>  #endif /* __ANDROID_CAMERA_CAPABILITIES_H__ */","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 1A713C0109\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 25 Jul 2021 01:00:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 71064687B5;\n\tSun, 25 Jul 2021 03:00:18 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0D79260274\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 25 Jul 2021 03:00:17 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4F017255;\n\tSun, 25 Jul 2021 03:00:16 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"VMIfExE2\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1627174816;\n\tbh=Fiy85OyuoP4dj+9dNJKJ5J/qEail4SRXqa7OcHnHd3o=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=VMIfExE2FarZV+UTaG5NxqCQqYuPBQMeF+ZBVepEvfz33Qgaf8rgt94IuS379pbJS\n\tUwybW4rrPDM4Jv4ypw26pkaTwrJcBhy42638SVz/4MTHaA6HAOxsNg03P5ZgRjHm4Y\n\tXZb7/Cbv+6M3mUyEUXeqYHBpw+/O+hMbsMwwSA6Q=","Date":"Sun, 25 Jul 2021 04:00:12 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<YPy3nP6PuEQPTfje@pendragon.ideasonboard.com>","References":"<20210720101307.26010-1-paul.elder@ideasonboard.com>\n\t<20210720101307.26010-8-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210720101307.26010-8-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v5 7/9] android: capabilities: Make\n\tkeys list into set and member variable","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]