Patch Detail
Show a patch.
GET /api/1.1/patches/9009/?format=api
{ "id": 9009, "url": "https://patchwork.libcamera.org/api/1.1/patches/9009/?format=api", "web_url": "https://patchwork.libcamera.org/patch/9009/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20200725164243.168297-3-jacopo@jmondi.org>", "date": "2020-07-25T16:42:40", "name": "[libcamera-devel,2/5] android: camera_device: Construct manual request template", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "80cbc740fc1a7d948cde9794d553d22f83d8dcbd", "submitter": { "id": 3, "url": "https://patchwork.libcamera.org/api/1.1/people/3/?format=api", "name": "Jacopo Mondi", "email": "jacopo@jmondi.org" }, "delegate": { "id": 15, "url": "https://patchwork.libcamera.org/api/1.1/users/15/?format=api", "username": "jmondi", "first_name": "Jacopo", "last_name": "Mondi", "email": "jacopo@jmondi.org" }, "mbox": "https://patchwork.libcamera.org/patch/9009/mbox/", "series": [ { "id": 1147, "url": "https://patchwork.libcamera.org/api/1.1/series/1147/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1147", "date": "2020-07-25T16:42:38", "name": "android: cts: Fix Manual and VideoRecording templates", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1147/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/9009/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/9009/checks/", "tags": {}, "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 0A55FBD86F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 25 Jul 2020 16:39:14 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0311261223;\n\tSat, 25 Jul 2020 18:39:13 +0200 (CEST)", "from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net\n\t[217.70.183.196])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C1CD26124D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 25 Jul 2020 18:39:11 +0200 (CEST)", "from uno.lan (2-224-242-101.ip172.fastwebnet.it [2.224.242.101])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 3868AE0004;\n\tSat, 25 Jul 2020 16:39:10 +0000 (UTC)" ], "X-Originating-IP": "2.224.242.101", "From": "Jacopo Mondi <jacopo@jmondi.org>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Sat, 25 Jul 2020 18:42:40 +0200", "Message-Id": "<20200725164243.168297-3-jacopo@jmondi.org>", "X-Mailer": "git-send-email 2.27.0", "In-Reply-To": "<20200725164243.168297-1-jacopo@jmondi.org>", "References": "<20200725164243.168297-1-jacopo@jmondi.org>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH 2/5] android: camera_device: Construct\n\tmanual request template", "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>", "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>" }, "content": "Construct the template for the MANUAL capture intent.\n\nThe constructed control pack is quite similar to the one used for\npreview, with the exception that the 3A functionalities are disabled.\n\nThis fixes the CTS 9.0.r12 test:\nandroid.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceManualTemplate\n\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/android/camera_device.cpp | 91 ++++++++++++++++++++++++++++++++++-\n src/android/camera_device.h | 1 +\n 2 files changed, 91 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex fa4570fabdd7..de18d1dbe299 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -917,6 +917,90 @@ CameraMetadata *CameraDevice::requestTemplatePreview()\n \treturn requestTemplate;\n }\n \n+CameraMetadata *CameraDevice::requestTemplateManual()\n+{\n+\t/*\n+\t * \\todo Keep this in sync with the actual number of entries.\n+\t * Currently: 20 entries, 35 bytes\n+\t */\n+\tCameraMetadata *requestTemplate = new CameraMetadata(20, 35);\n+\tif (!requestTemplate->isValid()) {\n+\t\tdelete requestTemplate;\n+\t\treturn nullptr;\n+\t}\n+\n+\tuint8_t aeMode = ANDROID_CONTROL_AE_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AE_MODE,\n+\t\t\t\t &aeMode, 1);\n+\n+\tint32_t aeExposureCompensation = 0;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n+\t\t\t\t &aeExposureCompensation, 1);\n+\n+\tuint8_t aePrecaptureTrigger = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n+\t\t\t\t &aePrecaptureTrigger, 1);\n+\n+\tuint8_t aeLock = ANDROID_CONTROL_AE_LOCK_OFF;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AE_LOCK,\n+\t\t\t\t &aeLock, 1);\n+\n+\tstd::vector<int32_t> aeFpsTarget = {\n+\t\t15, 30,\n+\t};\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n+\t\t\t\t aeFpsTarget.data(),\n+\t\t\t\t aeFpsTarget.size());\n+\n+\tuint8_t aeAntibandingMode = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE,\n+\t\t\t\t &aeAntibandingMode, 1);\n+\n+\tuint8_t afTrigger = ANDROID_CONTROL_AF_TRIGGER_IDLE;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AF_TRIGGER,\n+\t\t\t\t &afTrigger, 1);\n+\n+\tuint8_t awbMode = ANDROID_CONTROL_AWB_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AWB_MODE,\n+\t\t\t\t &awbMode, 1);\n+\n+\tuint8_t awbLock = ANDROID_CONTROL_AWB_LOCK_OFF;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_AWB_LOCK,\n+\t\t\t\t &awbLock, 1);\n+\n+\tuint8_t flashMode = ANDROID_FLASH_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_FLASH_MODE,\n+\t\t\t\t &flashMode, 1);\n+\n+\tuint8_t faceDetectMode = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_STATISTICS_FACE_DETECT_MODE,\n+\t\t\t\t &faceDetectMode, 1);\n+\n+\tuint8_t noiseReduction = ANDROID_NOISE_REDUCTION_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_NOISE_REDUCTION_MODE,\n+\t\t\t\t &noiseReduction, 1);\n+\n+\tuint8_t aberrationMode = ANDROID_COLOR_CORRECTION_ABERRATION_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n+\t\t\t\t &aberrationMode, 1);\n+\n+\tuint8_t controlMode = ANDROID_CONTROL_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_MODE, &controlMode, 1);\n+\n+\tfloat lensAperture = 2.53 / 100;\n+\trequestTemplate->addEntry(ANDROID_LENS_APERTURE, &lensAperture, 1);\n+\n+\tuint8_t opticalStabilization = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;\n+\trequestTemplate->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n+\t\t\t\t &opticalStabilization, 1);\n+\n+\tuint8_t captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;\n+\trequestTemplate->addEntry(ANDROID_CONTROL_CAPTURE_INTENT,\n+\t\t\t\t &captureIntent, 1);\n+\n+\treturn requestTemplate;\n+}\n+\n /*\n * Produce a metadata pack to be used as template for a capture request.\n */\n@@ -931,21 +1015,27 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)\n \tuint8_t captureIntent;\n \tswitch (type) {\n \tcase CAMERA3_TEMPLATE_PREVIEW:\n+\t\trequestTemplate = requestTemplatePreview();\n \t\tcaptureIntent = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;\n \t\tbreak;\n \tcase CAMERA3_TEMPLATE_STILL_CAPTURE:\n+\t\trequestTemplate = requestTemplatePreview();\n \t\tcaptureIntent = ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE;\n \t\tbreak;\n \tcase CAMERA3_TEMPLATE_VIDEO_RECORD:\n+\t\trequestTemplate = requestTemplatePreview();\n \t\tcaptureIntent = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_RECORD;\n \t\tbreak;\n \tcase CAMERA3_TEMPLATE_VIDEO_SNAPSHOT:\n+\t\trequestTemplate = requestTemplatePreview();\n \t\tcaptureIntent = ANDROID_CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT;\n \t\tbreak;\n \tcase CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG:\n+\t\trequestTemplate = requestTemplatePreview();\n \t\tcaptureIntent = ANDROID_CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG;\n \t\tbreak;\n \tcase CAMERA3_TEMPLATE_MANUAL:\n+\t\trequestTemplate = requestTemplateManual();\n \t\tcaptureIntent = ANDROID_CONTROL_CAPTURE_INTENT_MANUAL;\n \t\tbreak;\n \tdefault:\n@@ -953,7 +1043,6 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)\n \t\treturn nullptr;\n \t}\n \n-\trequestTemplate = requestTemplatePreview();\n \tif (!requestTemplate || !requestTemplate->isValid()) {\n \t\tLOG(HAL, Error) << \"Failed to construct request template\";\n \t\tdelete requestTemplate;\ndiff --git a/src/android/camera_device.h b/src/android/camera_device.h\nindex 5a52ad8f741c..db7b3c558993 100644\n--- a/src/android/camera_device.h\n+++ b/src/android/camera_device.h\n@@ -84,6 +84,7 @@ private:\n \tvoid notifyShutter(uint32_t frameNumber, uint64_t timestamp);\n \tvoid notifyError(uint32_t frameNumber, camera3_stream_t *stream);\n \tCameraMetadata *requestTemplatePreview();\n+\tCameraMetadata *requestTemplateManual();\n \tlibcamera::PixelFormat toPixelFormat(int format);\n \tstd::unique_ptr<CameraMetadata> getResultMetadata(int frame_number,\n \t\t\t\t\t\t\t int64_t timestamp);\n", "prefixes": [ "libcamera-devel", "2/5" ] }