[{"id":18211,"web_url":"https://patchwork.libcamera.org/comment/18211/","msgid":"<20210717101424.tcoufq4dneattxgi@uno.localdomain>","date":"2021-07-17T10:14:24","subject":"Re: [libcamera-devel] [RFC PATCH v4 07/21] android: capabilities:\n\tMake keys list into set and member variable","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul,\n\nOn Fri, Jul 16, 2021 at 07:56:17PM +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\nI've not checked if the arrays are copied verbatim, but I assume so\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\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 c7994800..09b3d82d 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -660,6 +660,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>  \tstd::set<camera_metadata_enum_android_request_available_capabilities>\n>  \tcapabilities = {};\n>\n> @@ -1160,141 +1290,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 38ee97d0..cf68539b 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> @@ -74,6 +75,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__ */\n> --\n> 2.27.0\n>","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 0DFBAC0109\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 17 Jul 2021 10:13:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5D30768536;\n\tSat, 17 Jul 2021 12:13:38 +0200 (CEST)","from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D41326027B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 17 Jul 2021 12:13:37 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id 3FCF1100003;\n\tSat, 17 Jul 2021 10:13:37 +0000 (UTC)"],"Date":"Sat, 17 Jul 2021 12:14:24 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20210717101424.tcoufq4dneattxgi@uno.localdomain>","References":"<20210716105631.158153-1-paul.elder@ideasonboard.com>\n\t<20210716105631.158153-8-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210716105631.158153-8-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH v4 07/21] android: capabilities:\n\tMake keys 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>"}}]