{"id":15344,"url":"https://patchwork.libcamera.org/api/1.1/covers/15344/?format=json","web_url":"https://patchwork.libcamera.org/cover/15344/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20220209071917.559993-1-hanlinchen@chromium.org>","date":"2022-02-09T07:19:08","name":"[libcamera-devel,0/9] Introduce Pipeline configuration preference for IPU3","submitter":{"id":98,"url":"https://patchwork.libcamera.org/api/1.1/people/98/?format=json","name":"Hanlin Chen","email":"hanlinchen@chromium.org"},"mbox":"https://patchwork.libcamera.org/cover/15344/mbox/","series":[{"id":2923,"url":"https://patchwork.libcamera.org/api/1.1/series/2923/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=2923","date":"2022-02-09T07:19:08","name":"Introduce Pipeline configuration preference for IPU3","version":1,"mbox":"https://patchwork.libcamera.org/series/2923/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/15344/comments/","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 09688BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  9 Feb 2022 07:19:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5D3D7610AD;\n\tWed,  9 Feb 2022 08:19:28 +0100 (CET)","from mail-pf1-x430.google.com (mail-pf1-x430.google.com\n\t[IPv6:2607:f8b0:4864:20::430])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 68DB060202\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  9 Feb 2022 08:19:26 +0100 (CET)","by mail-pf1-x430.google.com with SMTP id i30so2750869pfk.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 08 Feb 2022 23:19:26 -0800 (PST)","from localhost ([2401:fa00:1:10:a5cf:9a43:1c6d:824])\n\tby smtp.gmail.com with UTF8SMTPSA id\n\tj7sm17034409pfa.36.2022.02.08.23.19.23\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tTue, 08 Feb 2022 23:19:24 -0800 (PST)"],"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=\"nDFzp+Y8\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; h=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=m8zrYwsxrIyy49EVZPdSHFcOVjdQm3wrSjne+fEGZrE=;\n\tb=nDFzp+Y8YOF+zL4zB96tOi3+jsQl+iUOALHT26ZtBIpnvAJyhQPSM95fQvEvySbsY5\n\tpTrZcP46pyqWsRnt7Ny+agjRm33UP0vFHqFKh6KTuZFcp2BvdRIGDGBnYanVEzQDIWSK\n\tlU97a3XgnUNKFIH14Y5f74/9lQtK41EfVEMhA=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=m8zrYwsxrIyy49EVZPdSHFcOVjdQm3wrSjne+fEGZrE=;\n\tb=6J/1BE1v1QfkhBavafB56D0Wq35XslU7lirmgmKjMhKdR8Gx2rpUOVwgDckAlqTsxx\n\tWkQCfhqOLXc9pGdf1FMc+aFaXNygVb8ofGCKmURIU36qCSAtOpVFmgX+s8p5yo7SVWgI\n\tqUAA66FcAwNRRg/f61MwvbXOPCnUyIpSK4e0GLD0cSyv++YntStXL56A+YEooOs6+Rpr\n\txi66z1POBy5qFZfMfEEOjA0d81CcjuGcfWhozxBdG+lNK0etBGzshWvrr2oVkoHT++MS\n\t7CwrCb3JwykqAAw15shMTj1RFIQPx4craQr1jMajN7i3tpYnhqW3sA+9fkcczHmjmeV+\n\tfqlQ==","X-Gm-Message-State":"AOAM530T+fXzvRSbfAiUCZszzZnXnbEG1hXU/NayNzjT8W7VES6d3dug\n\tn9od8UKE0PJ+FB7dZv4GnMr7bSul5DkMfQ==","X-Google-Smtp-Source":"ABdhPJwPWLoJ7OnGXrneJojHqaQocdIp9sADBUroYPAtMI0F6Dul+X7X8ialPFZQGF+8qYg+egHNiQ==","X-Received":"by 2002:a63:2a02:: with SMTP id q2mr833683pgq.519.1644391164379; \n\tTue, 08 Feb 2022 23:19:24 -0800 (PST)","From":"Han-Lin Chen <hanlinchen@chromium.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Wed,  9 Feb 2022 15:19:08 +0800","Message-Id":"<20220209071917.559993-1-hanlinchen@chromium.org>","X-Mailer":"git-send-email 2.35.0.263.gb82422642f-goog","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH 0/9] Introduce Pipeline configuration\n\tpreference for IPU3","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>"},"content":"Hello,\n\nThis patch series is to introduce the pipeline configuration preference\nfor IPU3. Before the series, IPU3 calculates the ImgU configuration\nbased on the algorithm from Intel:\nhttps://github.com/intel/intel-ipu3-pipecfg\n\nHowever, IPU3 seems not well defined with the limitation on ImgU and\nleading to configuration failure in some cases. See:\nhttps://bugs.libcamera.org/show_bug.cgi?id=67\n\nDue to this, on ChromeOS, Intel made manual adjusts on the validated\nsetting for each camera module. The patch series is to introduce the\nfeature for IPU3, and possibly other platforms with similar issues.\n\nThe patch 1-2 is to introduce Option control for user to enable features\nwhich need to be selected before querying capabilities of a camera.\n\nThe patch 3 Adds helper class to wrap libyaml for easier reading yaml\nfiles.\n\nThe patch 4-9 Supports the Pipeline configuration preference of IPU3 and\ndefault to be enabled on ChromeOS is it's specified on hal_config.yaml.\n\nHan-Lin Chen (9):\n  libcamera: Introduce option to customize behavior for a camera module\n  libcamera: Add options() and setOptions() operations to Camera\n  libcamera: Introduce YamlParser as a helper to parse yaml files\n  android: camera_hal_config: Use YamlParser to parse android hal config\n  android: Add pipeline_config_file parameter for camera_hal.yaml\n  android: Set PipelineConfigFile option if it's supported by the camera\n  libcamera: ipu3: Add helper class PipeConfigPreference\n  libcamera: ipu3: Support PipelineConfigFile option\n  android: Elevate min duration to 30 FPS if it's lower within 2%\n\n README.rst                                    |   2 +-\n include/libcamera/camera.h                    |   3 +\n include/libcamera/geometry.h                  |   4 +\n include/libcamera/internal/camera.h           |   2 +\n include/libcamera/internal/meson.build        |   1 +\n include/libcamera/internal/pipeline_handler.h |   2 +\n include/libcamera/internal/yaml_parser.h      |  82 ++\n include/libcamera/ipa/ipa_controls.h          |   1 +\n include/libcamera/meson.build                 |   3 +-\n include/libcamera/option_ids.h.in             |  36 +\n src/android/camera_capabilities.cpp           |  31 +-\n src/android/camera_device.cpp                 |  19 +\n src/android/camera_hal_config.cpp             | 344 ++------\n src/android/camera_hal_config.h               |   1 +\n src/android/data/nautilus/camera_hal.yaml     |   2 +\n src/android/data/nautilus/imx258.yaml         | 248 ++++++\n src/android/data/soraka/camera_hal.yaml       |   2 +\n src/android/data/soraka/ov13858.yaml          | 236 ++++++\n src/android/data/soraka/ov5670.yaml           | 242 ++++++\n src/libcamera/camera.cpp                      |  59 ++\n src/libcamera/control_serializer.cpp          |  12 +\n src/libcamera/geometry.cpp                    |  20 +\n src/libcamera/meson.build                     |   3 +\n src/libcamera/option_ids.cpp.in               |  58 ++\n src/libcamera/option_ids.yaml                 |  16 +\n src/libcamera/pipeline/ipu3/ipu3.cpp          | 215 ++++-\n src/libcamera/pipeline/ipu3/meson.build       |   1 +\n .../pipeline/ipu3/pipe_config_pref.cpp        | 285 +++++++\n .../pipeline/ipu3/pipe_config_pref.h          |  80 ++\n src/libcamera/pipeline_handler.cpp            |  26 +\n src/libcamera/yaml_parser.cpp                 | 796 ++++++++++++++++++\n 31 files changed, 2563 insertions(+), 269 deletions(-)\n create mode 100644 include/libcamera/internal/yaml_parser.h\n create mode 100644 include/libcamera/option_ids.h.in\n create mode 100644 src/android/data/nautilus/imx258.yaml\n create mode 100644 src/android/data/soraka/ov13858.yaml\n create mode 100644 src/android/data/soraka/ov5670.yaml\n create mode 100644 src/libcamera/option_ids.cpp.in\n create mode 100644 src/libcamera/option_ids.yaml\n create mode 100644 src/libcamera/pipeline/ipu3/pipe_config_pref.cpp\n create mode 100644 src/libcamera/pipeline/ipu3/pipe_config_pref.h\n create mode 100644 src/libcamera/yaml_parser.cpp"}