[{"id":18530,"web_url":"https://patchwork.libcamera.org/comment/18530/","msgid":"<CAO5uPHNsV78kqg11AcmDGPvYiOWhsufytdU3gh5rFgnCMJC_Fw@mail.gmail.com>","date":"2021-08-04T03:48:04","subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Propagate the\n\trequested test pattern mode","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Can we merge this patch?\n\nOn Tue, Jun 29, 2021 at 1:36 AM Hirokazu Honda <hiroh@chromium.org> wrote:\n>\n> Propagate the requested test pattern mode to libcamera::Camera\n> through libcamera::Request and also set the android metadata to\n> the test pattern mode contained by the complete Request.\n>\n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/android/camera_device.cpp | 47 ++++++++++++++++++++++++++++++++++-\n>  1 file changed, 46 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 678cde23..bce3fe48 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -768,16 +768,54 @@ int CameraDevice::processControls(Camera3RequestDescriptor *descriptor)\n>                 return 0;\n>\n>         /* Translate the Android request settings to libcamera controls. */\n> +       ControlList &controls = descriptor->request_->controls();\n>         camera_metadata_ro_entry_t entry;\n>         if (settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry)) {\n>                 const int32_t *data = entry.data.i32;\n>                 Rectangle cropRegion{ data[0], data[1],\n>                                       static_cast<unsigned int>(data[2]),\n>                                       static_cast<unsigned int>(data[3]) };\n> -               ControlList &controls = descriptor->request_->controls();\n>                 controls.set(controls::ScalerCrop, cropRegion);\n>         }\n>\n> +       if (settings.getEntry(ANDROID_SENSOR_TEST_PATTERN_MODE, &entry)) {\n> +               const int32_t data = *entry.data.i32;\n> +               int32_t testPatternMode = controls::draft::TestPatternModeOff;\n> +               switch (data) {\n> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_OFF:\n> +                       testPatternMode = controls::draft::TestPatternModeOff;\n> +                       break;\n> +\n> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR:\n> +                       testPatternMode = controls::draft::TestPatternModeSolidColor;\n> +                       break;\n> +\n> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS:\n> +                       testPatternMode = controls::draft::TestPatternModeColorBars;\n> +                       break;\n> +\n> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY:\n> +                       testPatternMode = controls::draft::TestPatternModeColorBarsFadeToGray;\n> +                       break;\n> +\n> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_PN9:\n> +                       testPatternMode = controls::draft::TestPatternModePn9;\n> +                       break;\n> +\n> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1:\n> +                       testPatternMode = controls::draft::TestPatternModeCustom1;\n> +                       break;\n> +\n> +               default:\n> +                       LOG(HAL, Error)\n> +                               << \"Unknown test pattern mode: \" << data;\n> +\n> +                       return -EINVAL;\n> +               }\n> +\n> +               controls.set(controls::draft::TestPatternMode, testPatternMode);\n> +       }\n> +\n>         return 0;\n>  }\n>\n> @@ -1329,6 +1367,13 @@ CameraDevice::getResultMetadata(const Camera3RequestDescriptor &descriptor) cons\n>                 resultMetadata->addEntry(ANDROID_SCALER_CROP_REGION, cropRect);\n>         }\n>\n> +       if (metadata.contains(controls::draft::TestPatternMode)) {\n> +               const int32_t testPatternMode =\n> +                       metadata.get(controls::draft::TestPatternMode);\n> +               resultMetadata->addEntry(ANDROID_SENSOR_TEST_PATTERN_MODE,\n> +                                        testPatternMode);\n> +       }\n> +\n>         /*\n>          * Return the result metadata pack even is not valid: get() will return\n>          * nullptr.\n> --\n> 2.32.0.93.g670b81a890-goog\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 762F6C3232\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  4 Aug 2021 03:48:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4F75E68811;\n\tWed,  4 Aug 2021 05:48:17 +0200 (CEST)","from mail-ed1-x529.google.com (mail-ed1-x529.google.com\n\t[IPv6:2a00:1450:4864:20::529])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 12DB860268\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  4 Aug 2021 05:48:16 +0200 (CEST)","by mail-ed1-x529.google.com with SMTP id z11so1714312edb.11\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 03 Aug 2021 20:48:16 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"LqJTCUzK\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=5zDm0KMg1o0J8ABkZ7TkWE7BJqAN5NPrFLgFlNCOCJ0=;\n\tb=LqJTCUzKgRR9dL7QUWcg3Z7eJ2C7pZ/1FHS9Dd2CmA1PmMPtXKbnE4Eg1KKO9fcdT7\n\tgY/a2rSESnXyx3hz5We9tNZ8dxZyfdaKuyAD+6ZWMsGe+v/e4IZhR1XkJypiqh7IScKY\n\th9bTZCOK48Y9p2J/SzTCzYrUYCMSo0Pga418c=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=5zDm0KMg1o0J8ABkZ7TkWE7BJqAN5NPrFLgFlNCOCJ0=;\n\tb=f95K73TMz076cCayTY920OEaO5eOlf5u1wCuBXZWkFN6f9ywj3vK4QvTFTcEkUbcl7\n\tUUOp5TNmmkLcD2DoL6gmNGFvdMj8xJidPr1YOoT8ptxgMPXQaLtgVqvv//gewyI6wInM\n\tymUcEw1l9OJvNKqYJjkMKby/Fm/IPrBKeP/js9abcXWXh01z0Z5VWTOk21mLzdPQIQ7r\n\t3DkHqgL2OkL8tOcsmV6qaEzcGY8VuQC5PiADKY3WKe/p09qIiiakzcoVO97Z4+4DoUiW\n\tEnmbJFxXvq6aPx2dKxPwkGz4KkRb6KZ6sQIZSI3yOYCF4ECEIIJQgt5lKxfnm3frAvMk\n\tkvkA==","X-Gm-Message-State":"AOAM5334EUSAHTNL/fyqnobhLbQI5G9egfAhgVj70UNqD1oM0Ubl3dES\n\tAo0peo4gCUh743FuUF6umpKPhTVH5bsRYmGRYsvDS0O6QNo=","X-Google-Smtp-Source":"ABdhPJwz9wl2/m60ErYxUelVUkOBNtFph6dck7iBM6+TihVsY/GhDmQrSlUSgTCpO6RMNYKgtSV5MaU5fK8VL0bSBMA=","X-Received":"by 2002:aa7:cd92:: with SMTP id\n\tx18mr28963039edv.325.1628048895517; \n\tTue, 03 Aug 2021 20:48:15 -0700 (PDT)","MIME-Version":"1.0","References":"<20210628163644.3195189-1-hiroh@chromium.org>","In-Reply-To":"<20210628163644.3195189-1-hiroh@chromium.org>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Wed, 4 Aug 2021 12:48:04 +0900","Message-ID":"<CAO5uPHNsV78kqg11AcmDGPvYiOWhsufytdU3gh5rFgnCMJC_Fw@mail.gmail.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Propagate the\n\trequested test pattern mode","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18590,"web_url":"https://patchwork.libcamera.org/comment/18590/","msgid":"<e3539851-a58f-5043-a6fa-9418510c7625@ideasonboard.com>","date":"2021-08-06T10:30:33","subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Propagate the\n\trequested test pattern mode","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Hiro,\n\nOn 04/08/2021 04:48, Hirokazu Honda wrote:\n> Can we merge this patch?\n> \n> On Tue, Jun 29, 2021 at 1:36 AM Hirokazu Honda <hiroh@chromium.org> wrote:\n>>\n>> Propagate the requested test pattern mode to libcamera::Camera\n>> through libcamera::Request and also set the android metadata to\n>> the test pattern mode contained by the complete Request.\n>>\n>> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n>> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n>> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nI'll run this through the compile matrix and integrate next.\n\n--\nKieran\n\n\n>> ---\n>>  src/android/camera_device.cpp | 47 ++++++++++++++++++++++++++++++++++-\n>>  1 file changed, 46 insertions(+), 1 deletion(-)\n>>\n>> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n>> index 678cde23..bce3fe48 100644\n>> --- a/src/android/camera_device.cpp\n>> +++ b/src/android/camera_device.cpp\n>> @@ -768,16 +768,54 @@ int CameraDevice::processControls(Camera3RequestDescriptor *descriptor)\n>>                 return 0;\n>>\n>>         /* Translate the Android request settings to libcamera controls. */\n>> +       ControlList &controls = descriptor->request_->controls();\n>>         camera_metadata_ro_entry_t entry;\n>>         if (settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry)) {\n>>                 const int32_t *data = entry.data.i32;\n>>                 Rectangle cropRegion{ data[0], data[1],\n>>                                       static_cast<unsigned int>(data[2]),\n>>                                       static_cast<unsigned int>(data[3]) };\n>> -               ControlList &controls = descriptor->request_->controls();\n>>                 controls.set(controls::ScalerCrop, cropRegion);\n>>         }\n>>\n>> +       if (settings.getEntry(ANDROID_SENSOR_TEST_PATTERN_MODE, &entry)) {\n>> +               const int32_t data = *entry.data.i32;\n>> +               int32_t testPatternMode = controls::draft::TestPatternModeOff;\n>> +               switch (data) {\n>> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_OFF:\n>> +                       testPatternMode = controls::draft::TestPatternModeOff;\n>> +                       break;\n>> +\n>> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_SOLID_COLOR:\n>> +                       testPatternMode = controls::draft::TestPatternModeSolidColor;\n>> +                       break;\n>> +\n>> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS:\n>> +                       testPatternMode = controls::draft::TestPatternModeColorBars;\n>> +                       break;\n>> +\n>> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY:\n>> +                       testPatternMode = controls::draft::TestPatternModeColorBarsFadeToGray;\n>> +                       break;\n>> +\n>> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_PN9:\n>> +                       testPatternMode = controls::draft::TestPatternModePn9;\n>> +                       break;\n>> +\n>> +               case ANDROID_SENSOR_TEST_PATTERN_MODE_CUSTOM1:\n>> +                       testPatternMode = controls::draft::TestPatternModeCustom1;\n>> +                       break;\n>> +\n>> +               default:\n>> +                       LOG(HAL, Error)\n>> +                               << \"Unknown test pattern mode: \" << data;\n>> +\n>> +                       return -EINVAL;\n>> +               }\n>> +\n>> +               controls.set(controls::draft::TestPatternMode, testPatternMode);\n>> +       }\n>> +\n>>         return 0;\n>>  }\n>>\n>> @@ -1329,6 +1367,13 @@ CameraDevice::getResultMetadata(const Camera3RequestDescriptor &descriptor) cons\n>>                 resultMetadata->addEntry(ANDROID_SCALER_CROP_REGION, cropRect);\n>>         }\n>>\n>> +       if (metadata.contains(controls::draft::TestPatternMode)) {\n>> +               const int32_t testPatternMode =\n>> +                       metadata.get(controls::draft::TestPatternMode);\n>> +               resultMetadata->addEntry(ANDROID_SENSOR_TEST_PATTERN_MODE,\n>> +                                        testPatternMode);\n>> +       }\n>> +\n>>         /*\n>>          * Return the result metadata pack even is not valid: get() will return\n>>          * nullptr.\n>> --\n>> 2.32.0.93.g670b81a890-goog\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 02E06BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  6 Aug 2021 10:30:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B0A9668811;\n\tFri,  6 Aug 2021 12:30:37 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CF86F60266\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Aug 2021 12:30:36 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 673294FB;\n\tFri,  6 Aug 2021 12:30:36 +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=\"sJAzWkXR\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1628245836;\n\tbh=Hw/BYHfmfaJ4mQKIIgOSdlyPb1MnfCqLX6BLkY4pHng=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=sJAzWkXRI8R2bitsOzMgIeWrt5hrqKJ84TZeR+jhSQVeAjHDgHdG01/2pGf3MV3mC\n\tZbgF+15mzdSQahH+vdktNfAanKlUTr15S40L/bbiFqJVWqWLQ0QHyIosJI7zsF06rD\n\tqTtfpp6I+xr70XUERSnZowhtFr0zGgN6xPGur/cM=","To":"Hirokazu Honda <hiroh@chromium.org>,\n\tlibcamera devel <libcamera-devel@lists.libcamera.org>","References":"<20210628163644.3195189-1-hiroh@chromium.org>\n\t<CAO5uPHNsV78kqg11AcmDGPvYiOWhsufytdU3gh5rFgnCMJC_Fw@mail.gmail.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<e3539851-a58f-5043-a6fa-9418510c7625@ideasonboard.com>","Date":"Fri, 6 Aug 2021 11:30:33 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.11.0","MIME-Version":"1.0","In-Reply-To":"<CAO5uPHNsV78kqg11AcmDGPvYiOWhsufytdU3gh5rFgnCMJC_Fw@mail.gmail.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH] android: camera_device: Propagate the\n\trequested test pattern mode","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]