[{"id":14511,"web_url":"https://patchwork.libcamera.org/comment/14511/","msgid":"<X/uZSGZiffrFb/ag@pendragon.ideasonboard.com>","date":"2021-01-11T00:18:16","subject":"Re: [libcamera-devel] [PATCH 12/12] android: camera_device: Report\n\tthe required dynamic metadata","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Tue, Jan 05, 2021 at 08:05:22PM +0100, Jacopo Mondi wrote:\n> The list of dynamic metadata reported by the Camera HAL is currently\n> very limited.\n> \n> Augment the number of reported metadata in order to fix errors\n> reported by the android.hardware.camera2.cts.CaptureRequestTest test\n> module.\n> \n> The test module still fails in 2 tests because of the missing\n> android.sensor.info.maxFrameDuration static metadata.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/android/camera_device.cpp | 134 ++++++++++++++++++++++++++--------\n>  1 file changed, 105 insertions(+), 29 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 6eb3404739e8..d2a8e876eccc 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -675,10 +675,10 @@ std::tuple<uint32_t, uint32_t> CameraDevice::calculateStaticMetadataSize()\n>  {\n>  \t/*\n>  \t * \\todo Keep this in sync with the actual number of entries.\n> -\t * Currently: 53 entries, 714 bytes of static metadata\n> +\t * Currently: 53 entries, 786 bytes of static metadata\n>  \t */\n>  \tuint32_t numEntries = 53;\n> -\tuint32_t byteSize = 714;\n> +\tuint32_t byteSize = 786;\n>  \n>  \t/*\n>  \t * Calculate space occupation in bytes for dynamically built metadata\n> @@ -1200,19 +1200,37 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n>  \t\t\t\t  availableRequestKeys.size());\n>  \n>  \tstd::vector<int32_t> availableResultKeys = {\n> -\t\tANDROID_CONTROL_AE_STATE,\n> +\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n>  \t\tANDROID_CONTROL_AE_LOCK,\n> +\t\tANDROID_CONTROL_AE_MODE,\n> +\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> +\t\tANDROID_CONTROL_AE_STATE,\n> +\t\tANDROID_CONTROL_AF_MODE,\n>  \t\tANDROID_CONTROL_AF_STATE,\n> -\t\tANDROID_CONTROL_AWB_STATE,\n> +\t\tANDROID_CONTROL_AF_TRIGGER,\n> +\t\tANDROID_CONTROL_AWB_MODE,\n>  \t\tANDROID_CONTROL_AWB_LOCK,\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_LENS_STATE,\n> -\t\tANDROID_REQUEST_PIPELINE_DEPTH,\n> -\t\tANDROID_SCALER_CROP_REGION,\n> +\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n>  \t\tANDROID_SENSOR_TIMESTAMP,\n>  \t\tANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n>  \t\tANDROID_SENSOR_EXPOSURE_TIME,\n> +\t\tANDROID_STATISTICS_FACE_DETECT_MODE,\n> +\t\tANDROID_NOISE_REDUCTION_MODE,\n>  \t\tANDROID_STATISTICS_LENS_SHADING_MAP_MODE,\n>  \t\tANDROID_STATISTICS_SCENE_FLICKER,\n> +\t\tANDROID_NOISE_REDUCTION_MODE,\n\nThis one is specified twice.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\t\tANDROID_REQUEST_PIPELINE_DEPTH,\n> +\t\tANDROID_SCALER_CROP_REGION,\n>  \t\tANDROID_JPEG_SIZE,\n>  \t\tANDROID_JPEG_QUALITY,\n>  \t\tANDROID_JPEG_ORIENTATION,\n> @@ -1885,48 +1903,106 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,\n>  \n>  \t/*\n>  \t * \\todo Keep this in sync with the actual number of entries.\n> -\t * Currently: 18 entries, 62 bytes\n> +\t * Currently: 33 entries, 75 bytes\n> +\t *\n> +\t * Reserve more space for the JPEG metadata set by the post-processor.\n> +\t * Currently: ANDROID_JPEG_SIZE (int32_t), ANDROID_JPEG_QUALITY (byte),\n> +\t * ANDROID_JPEG_ORIENTATION (int32_t) = 3 entries, 9 bytes.\n>  \t */\n>  \tstd::unique_ptr<CameraMetadata> resultMetadata =\n> -\t\tstd::make_unique<CameraMetadata>(19, 63);\n> +\t\tstd::make_unique<CameraMetadata>(33, 75);\n>  \tif (!resultMetadata->isValid()) {\n>  \t\tLOG(HAL, Error) << \"Failed to allocate static metadata\";\n>  \t\treturn nullptr;\n>  \t}\n>  \n> -\tconst uint8_t ae_state = ANDROID_CONTROL_AE_STATE_CONVERGED;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, &ae_state, 1);\n> +\tuint8_t value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AE_LOCK_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_LOCK, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AE_MODE_ON;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_MODE, &value, 1);\n>  \n> -\tconst uint8_t ae_lock = ANDROID_CONTROL_AE_LOCK_OFF;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AE_LOCK, &ae_lock, 1);\n> +\tstd::vector<int32_t> aeFpsTarget = { 30, 30 };\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\t\t\t aeFpsTarget.data(), aeFpsTarget.size());\n>  \n> -\tuint8_t af_state = ANDROID_CONTROL_AF_STATE_INACTIVE;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AF_STATE, &af_state, 1);\n> +\tvalue = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> +\t\t\t\t &value, 1);\n>  \n> -\tconst uint8_t awb_state = ANDROID_CONTROL_AWB_STATE_CONVERGED;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_STATE, &awb_state, 1);\n> +\tvalue = ANDROID_CONTROL_AE_STATE_CONVERGED;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, &value, 1);\n>  \n> -\tconst uint8_t awb_lock = ANDROID_CONTROL_AWB_LOCK_OFF;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_LOCK, &awb_lock, 1);\n> +\tvalue = ANDROID_CONTROL_AF_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AF_MODE, &value, 1);\n>  \n> -\tconst uint8_t lens_state = ANDROID_LENS_STATE_STATIONARY;\n> -\tresultMetadata->addEntry(ANDROID_LENS_STATE, &lens_state, 1);\n> +\tvalue = ANDROID_CONTROL_AF_STATE_INACTIVE;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AF_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AF_TRIGGER_IDLE;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AF_TRIGGER, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AWB_MODE_AUTO;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AWB_LOCK_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_LOCK, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AWB_STATE_CONVERGED;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_CAPTURE_INTENT, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_EFFECT_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_EFFECT_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_MODE_AUTO;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_SCENE_MODE_DISABLED;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_SCENE_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_VIDEO_STABILIZATION_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_FLASH_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_FLASH_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_FLASH_STATE_UNAVAILABLE;\n> +\tresultMetadata->addEntry(ANDROID_FLASH_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_LENS_STATE_STATIONARY;\n> +\tresultMetadata->addEntry(ANDROID_LENS_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> +\t\t\t\t &value, 1);\n>  \n>  \tresultMetadata->addEntry(ANDROID_SENSOR_TIMESTAMP, &timestamp, 1);\n>  \n> -\t/* 33.3 msec */\n> -\tconst int64_t rolling_shutter_skew = 33300000;\n> -\tresultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n> -\t\t\t\t &rolling_shutter_skew, 1);\n> +\tvalue = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_STATISTICS_FACE_DETECT_MODE,\n> +\t\t\t\t &value, 1);\n>  \n> -\tconst uint8_t lens_shading_map_mode =\n> -\t\t\t\tANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;\n> +\tvalue = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;\n>  \tresultMetadata->addEntry(ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,\n> -\t\t\t\t &lens_shading_map_mode, 1);\n> +\t\t\t\t &value, 1);\n>  \n> -\tconst uint8_t scene_flicker = ANDROID_STATISTICS_SCENE_FLICKER_NONE;\n> +\tvalue = ANDROID_STATISTICS_SCENE_FLICKER_NONE;\n>  \tresultMetadata->addEntry(ANDROID_STATISTICS_SCENE_FLICKER,\n> -\t\t\t\t &scene_flicker, 1);\n> +\t\t\t\t &value, 1);\n> +\n> +\tvalue = ANDROID_NOISE_REDUCTION_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_NOISE_REDUCTION_MODE, &value, 1);\n> +\n> +\t/* 33.3 msec */\n> +\tconst int64_t rolling_shutter_skew = 33300000;\n> +\tresultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n> +\t\t\t\t &rolling_shutter_skew, 1);\n>  \n>  \t/* Add metadata tags reported by libcamera. */\n>  \tif (metadata.contains(controls::draft::PipelineDepth)) {","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 7FACBBD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 11 Jan 2021 00:18:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0F5A068092;\n\tMon, 11 Jan 2021 01:18:33 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 79FDD60317\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 11 Jan 2021 01:18:31 +0100 (CET)","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 E0BD0EC;\n\tMon, 11 Jan 2021 01:18:30 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Nyb6jRS1\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1610324311;\n\tbh=y3kvDdWP6VABXSMuEQi/bFfzWXw0pxIftSnHDDqxeAE=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Nyb6jRS1ucUqVcoi45NVIiela8PNQ7Awj7rhsITFbUH1/hyzt7lDIr/IJfmM0u6j3\n\tD90BtwvIySURJhlUaOkHT6hIuZnRo6vQzpWzxtRSaYQN2aGvjJFkQ4XTyn+rdT53zE\n\t/zQsXHLfSf7IdfEBPgf1Sl7hGSbgIKyvjOxAUtc0=","Date":"Mon, 11 Jan 2021 02:18:16 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<X/uZSGZiffrFb/ag@pendragon.ideasonboard.com>","References":"<20210105190522.682324-1-jacopo@jmondi.org>\n\t<20210105190522.682324-13-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210105190522.682324-13-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 12/12] android: camera_device: Report\n\tthe required dynamic metadata","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","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14588,"web_url":"https://patchwork.libcamera.org/comment/14588/","msgid":"<YAWtsHd7oXTzVfUH@oden.dyn.berto.se>","date":"2021-01-18T15:48:00","subject":"Re: [libcamera-devel] [PATCH 12/12] android: camera_device: Report\n\tthe required dynamic metadata","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nThanks for your work.\n\nOn 2021-01-05 20:05:22 +0100, Jacopo Mondi wrote:\n> The list of dynamic metadata reported by the Camera HAL is currently\n> very limited.\n> \n> Augment the number of reported metadata in order to fix errors\n> reported by the android.hardware.camera2.cts.CaptureRequestTest test\n> module.\n> \n> The test module still fails in 2 tests because of the missing\n> android.sensor.info.maxFrameDuration static metadata.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nWith the duplicated key pointed out by Laurent fixed,\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/android/camera_device.cpp | 134 ++++++++++++++++++++++++++--------\n>  1 file changed, 105 insertions(+), 29 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 6eb3404739e8..d2a8e876eccc 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -675,10 +675,10 @@ std::tuple<uint32_t, uint32_t> CameraDevice::calculateStaticMetadataSize()\n>  {\n>  \t/*\n>  \t * \\todo Keep this in sync with the actual number of entries.\n> -\t * Currently: 53 entries, 714 bytes of static metadata\n> +\t * Currently: 53 entries, 786 bytes of static metadata\n>  \t */\n>  \tuint32_t numEntries = 53;\n> -\tuint32_t byteSize = 714;\n> +\tuint32_t byteSize = 786;\n>  \n>  \t/*\n>  \t * Calculate space occupation in bytes for dynamically built metadata\n> @@ -1200,19 +1200,37 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n>  \t\t\t\t  availableRequestKeys.size());\n>  \n>  \tstd::vector<int32_t> availableResultKeys = {\n> -\t\tANDROID_CONTROL_AE_STATE,\n> +\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n>  \t\tANDROID_CONTROL_AE_LOCK,\n> +\t\tANDROID_CONTROL_AE_MODE,\n> +\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> +\t\tANDROID_CONTROL_AE_STATE,\n> +\t\tANDROID_CONTROL_AF_MODE,\n>  \t\tANDROID_CONTROL_AF_STATE,\n> -\t\tANDROID_CONTROL_AWB_STATE,\n> +\t\tANDROID_CONTROL_AF_TRIGGER,\n> +\t\tANDROID_CONTROL_AWB_MODE,\n>  \t\tANDROID_CONTROL_AWB_LOCK,\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_LENS_STATE,\n> -\t\tANDROID_REQUEST_PIPELINE_DEPTH,\n> -\t\tANDROID_SCALER_CROP_REGION,\n> +\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n>  \t\tANDROID_SENSOR_TIMESTAMP,\n>  \t\tANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n>  \t\tANDROID_SENSOR_EXPOSURE_TIME,\n> +\t\tANDROID_STATISTICS_FACE_DETECT_MODE,\n> +\t\tANDROID_NOISE_REDUCTION_MODE,\n>  \t\tANDROID_STATISTICS_LENS_SHADING_MAP_MODE,\n>  \t\tANDROID_STATISTICS_SCENE_FLICKER,\n> +\t\tANDROID_NOISE_REDUCTION_MODE,\n> +\t\tANDROID_REQUEST_PIPELINE_DEPTH,\n> +\t\tANDROID_SCALER_CROP_REGION,\n>  \t\tANDROID_JPEG_SIZE,\n>  \t\tANDROID_JPEG_QUALITY,\n>  \t\tANDROID_JPEG_ORIENTATION,\n> @@ -1885,48 +1903,106 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,\n>  \n>  \t/*\n>  \t * \\todo Keep this in sync with the actual number of entries.\n> -\t * Currently: 18 entries, 62 bytes\n> +\t * Currently: 33 entries, 75 bytes\n> +\t *\n> +\t * Reserve more space for the JPEG metadata set by the post-processor.\n> +\t * Currently: ANDROID_JPEG_SIZE (int32_t), ANDROID_JPEG_QUALITY (byte),\n> +\t * ANDROID_JPEG_ORIENTATION (int32_t) = 3 entries, 9 bytes.\n>  \t */\n>  \tstd::unique_ptr<CameraMetadata> resultMetadata =\n> -\t\tstd::make_unique<CameraMetadata>(19, 63);\n> +\t\tstd::make_unique<CameraMetadata>(33, 75);\n>  \tif (!resultMetadata->isValid()) {\n>  \t\tLOG(HAL, Error) << \"Failed to allocate static metadata\";\n>  \t\treturn nullptr;\n>  \t}\n>  \n> -\tconst uint8_t ae_state = ANDROID_CONTROL_AE_STATE_CONVERGED;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, &ae_state, 1);\n> +\tuint8_t value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AE_LOCK_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_LOCK, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AE_MODE_ON;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_MODE, &value, 1);\n>  \n> -\tconst uint8_t ae_lock = ANDROID_CONTROL_AE_LOCK_OFF;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AE_LOCK, &ae_lock, 1);\n> +\tstd::vector<int32_t> aeFpsTarget = { 30, 30 };\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\t\t\t aeFpsTarget.data(), aeFpsTarget.size());\n>  \n> -\tuint8_t af_state = ANDROID_CONTROL_AF_STATE_INACTIVE;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AF_STATE, &af_state, 1);\n> +\tvalue = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> +\t\t\t\t &value, 1);\n>  \n> -\tconst uint8_t awb_state = ANDROID_CONTROL_AWB_STATE_CONVERGED;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_STATE, &awb_state, 1);\n> +\tvalue = ANDROID_CONTROL_AE_STATE_CONVERGED;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, &value, 1);\n>  \n> -\tconst uint8_t awb_lock = ANDROID_CONTROL_AWB_LOCK_OFF;\n> -\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_LOCK, &awb_lock, 1);\n> +\tvalue = ANDROID_CONTROL_AF_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AF_MODE, &value, 1);\n>  \n> -\tconst uint8_t lens_state = ANDROID_LENS_STATE_STATIONARY;\n> -\tresultMetadata->addEntry(ANDROID_LENS_STATE, &lens_state, 1);\n> +\tvalue = ANDROID_CONTROL_AF_STATE_INACTIVE;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AF_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AF_TRIGGER_IDLE;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AF_TRIGGER, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AWB_MODE_AUTO;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AWB_LOCK_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_LOCK, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_AWB_STATE_CONVERGED;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_AWB_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_CAPTURE_INTENT, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_EFFECT_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_EFFECT_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_MODE_AUTO;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_SCENE_MODE_DISABLED;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_SCENE_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_CONTROL_VIDEO_STABILIZATION_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_CONTROL_VIDEO_STABILIZATION_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_FLASH_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_FLASH_MODE, &value, 1);\n> +\n> +\tvalue = ANDROID_FLASH_STATE_UNAVAILABLE;\n> +\tresultMetadata->addEntry(ANDROID_FLASH_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_LENS_STATE_STATIONARY;\n> +\tresultMetadata->addEntry(ANDROID_LENS_STATE, &value, 1);\n> +\n> +\tvalue = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> +\t\t\t\t &value, 1);\n>  \n>  \tresultMetadata->addEntry(ANDROID_SENSOR_TIMESTAMP, &timestamp, 1);\n>  \n> -\t/* 33.3 msec */\n> -\tconst int64_t rolling_shutter_skew = 33300000;\n> -\tresultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n> -\t\t\t\t &rolling_shutter_skew, 1);\n> +\tvalue = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_STATISTICS_FACE_DETECT_MODE,\n> +\t\t\t\t &value, 1);\n>  \n> -\tconst uint8_t lens_shading_map_mode =\n> -\t\t\t\tANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;\n> +\tvalue = ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;\n>  \tresultMetadata->addEntry(ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,\n> -\t\t\t\t &lens_shading_map_mode, 1);\n> +\t\t\t\t &value, 1);\n>  \n> -\tconst uint8_t scene_flicker = ANDROID_STATISTICS_SCENE_FLICKER_NONE;\n> +\tvalue = ANDROID_STATISTICS_SCENE_FLICKER_NONE;\n>  \tresultMetadata->addEntry(ANDROID_STATISTICS_SCENE_FLICKER,\n> -\t\t\t\t &scene_flicker, 1);\n> +\t\t\t\t &value, 1);\n> +\n> +\tvalue = ANDROID_NOISE_REDUCTION_MODE_OFF;\n> +\tresultMetadata->addEntry(ANDROID_NOISE_REDUCTION_MODE, &value, 1);\n> +\n> +\t/* 33.3 msec */\n> +\tconst int64_t rolling_shutter_skew = 33300000;\n> +\tresultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,\n> +\t\t\t\t &rolling_shutter_skew, 1);\n>  \n>  \t/* Add metadata tags reported by libcamera. */\n>  \tif (metadata.contains(controls::draft::PipelineDepth)) {\n> -- \n> 2.29.2\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 08F6FBD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 18 Jan 2021 15:48:04 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7D53D6812E;\n\tMon, 18 Jan 2021 16:48:03 +0100 (CET)","from mail-lf1-x133.google.com (mail-lf1-x133.google.com\n\t[IPv6:2a00:1450:4864:20::133])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 43E896010B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 18 Jan 2021 16:48:02 +0100 (CET)","by mail-lf1-x133.google.com with SMTP id v67so24735855lfa.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 18 Jan 2021 07:48:02 -0800 (PST)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\te27sm1707643ljb.6.2021.01.18.07.48.00\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 18 Jan 2021 07:48:00 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"QuMZZVdZ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=s9s/RypJ4lWVXhoZMINschbp5+ArMZJwDd4ZxSqlD2c=;\n\tb=QuMZZVdZccCJ66q1KXVtfK66Hft3BV/eWluUzYyuyF8gAunpCAweVx7Srg/syP3t5G\n\t6jPaa2aKnNVlPwT7vckbOTFGLdXA4xgnSkDK6aAxQ5gnV7thkcYnf+dcwGLXKKVgcANw\n\tGwF+bUiM5YvvpJFfQN625N9VCfD8ZOp+JxRrWy9mh02RONMTGxvr/EyeUlQ+Qc9kqyHE\n\t4cIeRKoO4C2tJ+iuoTE9Ix9OaQNLka353B1OtPWkF5Z+Rp09cRLmt9a6EdSMH1QNUdux\n\tzxFeCI7z62sHL03MZ4PcGocKTyNiNU1nxnwQj6nKb1MofY4x96s2xSuhkRMJbCXyUSyB\n\t7BiQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=s9s/RypJ4lWVXhoZMINschbp5+ArMZJwDd4ZxSqlD2c=;\n\tb=dNK5B93DCowwQx70ulM3RV6+OaGolZzMcO+c6X40aTrnCu2FvgQKDr0jRDUV6+Fgp7\n\t1wbXCvzlXDaob0lkmk+cpmIEeTF2DzbdEkqF1qMrUU1lppOnyYh/oDW0DZCy7mnc/1I/\n\tz61zW2qkHcU1l2Ax2Z4wuaOah9wmD4wDqYQJLtdt+Bk8W5dqctyQ1EdRXlmBLln2JOA6\n\tFUutL4MRMtavr2ckUped3iJx8pqAT2LniJuxsuY2jGAiT+QEGX30PoT5WxBCdEiWKBYs\n\tGdkCgUlBzFLEKCvMv4g+L56+aoCj7CVHo5lz3VApw06aPFB0mLug8nzNSSWCyus2XRVG\n\tAFAg==","X-Gm-Message-State":"AOAM532IC0p/ngGnxlvBcxkpX6e/cLO0wwLnDMRRhmS9Uu59xoTiaCQz\n\t4cx1aebD4Hoe6idUgPffq/EQg8AXEmN62g==","X-Google-Smtp-Source":"ABdhPJxqW0XbBX1LJoGyLGlkGWLnHnK5ngSKESA1mzCLzOH34bee2/CsAXpvhEvxtrbTvxZ63q0dCw==","X-Received":"by 2002:a19:8357:: with SMTP id\n\tf84mr11508428lfd.567.1610984881654; \n\tMon, 18 Jan 2021 07:48:01 -0800 (PST)","Date":"Mon, 18 Jan 2021 16:48:00 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<YAWtsHd7oXTzVfUH@oden.dyn.berto.se>","References":"<20210105190522.682324-1-jacopo@jmondi.org>\n\t<20210105190522.682324-13-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210105190522.682324-13-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 12/12] android: camera_device: Report\n\tthe required dynamic metadata","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","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]