{"id":19193,"url":"https://patchwork.libcamera.org/api/1.1/covers/19193/?format=json","web_url":"https://patchwork.libcamera.org/cover/19193/","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":"<20231110110002.21381-1-naush@raspberrypi.com>","date":"2023-11-10T10:59:57","name":"[libcamera-devel,v1,0/5] Vendor controls and properties","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/1.1/people/34/?format=json","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"mbox":"https://patchwork.libcamera.org/cover/19193/mbox/","series":[{"id":4068,"url":"https://patchwork.libcamera.org/api/1.1/series/4068/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4068","date":"2023-11-10T10:59:57","name":"Vendor controls and properties","version":1,"mbox":"https://patchwork.libcamera.org/series/4068/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/19193/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 8190ABDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 10 Nov 2023 10:59:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C5324629AF;\n\tFri, 10 Nov 2023 11:59:58 +0100 (CET)","from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com\n\t[IPv6:2a00:1450:4864:20::32f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CF60A629AF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 10 Nov 2023 11:59:56 +0100 (CET)","by mail-wm1-x32f.google.com with SMTP id\n\t5b1f17b1804b1-4079ed65471so13935115e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 10 Nov 2023 02:59:56 -0800 (PST)","from localhost.localdomain ([93.93.133.154])\n\tby smtp.gmail.com with ESMTPSA id\n\tr15-20020a05600c35cf00b0040531f5c51asm4883156wmq.5.2023.11.10.02.59.55\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 10 Nov 2023 02:59:55 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1699613998;\n\tbh=hPooJCVb+jE04b3pNlZt12yekTpCtH8yoM6/YIqYbIw=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=vY/+SCJV6xefM6fdY4y6KIvyu0m6L481EFKo0PBrYaqj7CzpITsl0iQeDjHsCCtMv\n\tyHhtmCNkhVYOJ32ZF6cXAvKhPY++cRJ4k/WP15jbBlAU7c/hoaFrgEirUwIylaRswu\n\tVn1W4JwrVnid0He7aXbLF0pcY8fOt2z7yL69WEZb3kwCzeJhvlJ4WCiP14iPpmpkuc\n\trVFjyxrsfIZaREUvpQbyflVCZY/rsnB6LlKBCkc846jhxsQwOALuPM3hT3hoe+0yTS\n\t29IKWx9881X6dUbHl391sR8kKXCOSZksHgPAfhCEtls/dguguGAo+VerMf+mY1837i\n\tvNXEderFgD/Mg==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1699613996; x=1700218796;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=dI4zITRkUQtlPXk9Cj6+cCwYfi73Tn/dIxpgCRSjycI=;\n\tb=mhA5aKFnxpCKl+KB8vLcWtdGl+q8GSMYIZypSEgX3DClvVW9MtRUJeFlWB5lAlNgoH\n\tJ20aV37G+4SsHl/N3GZnc583BqCb6Phb7j0lThG8i+P3iqtuc7rVaD3/jIpAqCveKctl\n\tysYsb6sR9FIyseKiVXARTPd9VZboVlHQNaPhBERLc2ZSmw7x7jDXt57Dl6b9E5hoICIZ\n\tmCT2Tnp1IhcjA3BXEcrM6fXR/p4AOnz8ZCExPjmsrAozxY5ZIARVrDbBp1Rb9gBTnzDc\n\tzCr3FRP08rBwD8wLDSz0PrkTsPqYhkEmMi4o3FYqnL93RYXKz4X9RB6K+xzc5GzZ++W0\n\teMTw=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"mhA5aKFn\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1699613996; x=1700218796;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=dI4zITRkUQtlPXk9Cj6+cCwYfi73Tn/dIxpgCRSjycI=;\n\tb=E+2X7y8jNS4H4CYPzw1gNDF0wC3GiLs5Sp42QloAX5TD3LmT+BxzheMnY4WoJoyEaT\n\tY1dz58woAO7tWG25/HLdDvoQ8SNFz/jZ3/F8tOYNd8QtJfyXPCBUSNMdihOdyF/35Zpx\n\t2yrLHTwldRE/jKiNUbKpVvVOVcyZxFXNIq24oqRZYTxMTxjoxxBHK0P2XCxHnS5GxM9j\n\tbo3UlwlIJZ5IJV1wZv4AhgtdTNzyFUccOkfTfkWL5uunLUO/kG/yJCvLTfBiWImP3Rhw\n\t4WVD03PDbvxkjiz0ZcM6tAnQS+BhTNEcvh77ihnbTuomEdpNfF+5xtrSztraK8zl1rK0\n\tv6AQ==","X-Gm-Message-State":"AOJu0YxAS8GvZuTr3QOnKaF8CUurZtdPMSUVQZGB+zdKz3L4UqjgJjJh\n\t7ojgVAHrbt3pkUvjysITmuDkEfRZNQiQOaCayggOUw==","X-Google-Smtp-Source":"AGHT+IGTr2n6kL9jub2tDxuHdO3iHD+jogwSQ/Dn584NcU5x4DyUNXrPEV0HQyhjqKPRDlxJw+1wYA==","X-Received":"by 2002:a05:600c:3b15:b0:405:95ae:4a94 with SMTP id\n\tm21-20020a05600c3b1500b0040595ae4a94mr6354358wms.5.1699613995998; \n\tFri, 10 Nov 2023 02:59:55 -0800 (PST)","To":"libcamera-devel@lists.libcamera.org","Date":"Fri, 10 Nov 2023 10:59:57 +0000","Message-Id":"<20231110110002.21381-1-naush@raspberrypi.com>","X-Mailer":"git-send-email 2.34.1","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v1 0/5] Vendor controls and properties","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>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Hi,\n\nThis change introduces a first attempt at implementing vendor specific controls\nand properties in libcamera.  Vendor controls and properties live in their own\nnamespace, and each vendor must now reserve a numeric control id range to avoid\nany id value clashes.  Vendor controls may either live in the libcamera\ncontrol_ids.yaml/property_ids.yaml files or preferably separate vendor specific\nfiles.\n\nTo designate a vendor control, the YAML control description must contain a\n\"vendor: <vendor_string>\" tag.  For example,\n\n- RaspberryPiExampleControl:\n    type: string\n    vendor: rpi\n    description: |\n      Example vendor control with the \"rpi\" vendor tag.\n\nwill create a control in the libcamera::controls::rpi namespace, with the\nnumeric id value taken from the \"rpi\" reservation.  Additionally, a #define\nLIBCAMERA_RPI_VENDOR_CONTROL will be available for applications to selectively\ncompile in vendor control support.  Similar applies to the property generation.\n\nThe current mechanism for draft controls and propertiers have been deprecated,\nand now these are designated with the \"draft\" vendor tag.  Note that this causes\nan API breaking change since the numeric control id values for draft control\nhave their own designated range and namespace.  So, for example, the use of\ncontrols::NOISE_REDUCTION_MODE will need to be replaced with\ncontrols::draft::NOISE_REDUCTION_MODE.\n\nThanks,\nNaush\n\nNaushir Patuck (5):\n  controls: Add vendor control/property support to generation scripts\n  controls: build: Allow separate vendor control YAML files\n  libcamera: control: Add vendor control id range reservation\n  libcamera: controls: Use vendor tags for draft controls and properties\n  documentation: Document vendor specific control and properties\n    handling\n\n Documentation/guides/pipeline-handler.rst     |  53 ++++++\n include/libcamera/control_ids.h.in            |   6 +-\n include/libcamera/meson.build                 |  58 +++++-\n include/libcamera/property_ids.h.in           |   8 +-\n meson.build                                   |   2 +\n src/ipa/rpi/common/ipa_base.cpp               |   2 +-\n src/ipa/rpi/vc4/vc4.cpp                       |   2 +-\n src/libcamera/control_ids.cpp.in              |  16 +-\n src/libcamera/control_ids.yaml                |  20 +--\n src/libcamera/control_ids_rpi.yaml            |  17 ++\n src/libcamera/control_ranges.yaml             |  17 ++\n src/libcamera/meson.build                     |  20 ++-\n src/libcamera/property_ids.cpp.in             |  16 +-\n src/libcamera/property_ids.yaml               |   2 +-\n src/py/libcamera/gen-py-controls.py           |  31 +++-\n src/py/libcamera/meson.build                  |  26 +--\n src/py/libcamera/py_controls_generated.cpp.in |   6 +-\n .../libcamera/py_properties_generated.cpp.in  |   4 +-\n utils/gen-controls.py                         | 169 +++++++++++++-----\n 19 files changed, 348 insertions(+), 127 deletions(-)\n create mode 100644 src/libcamera/control_ids_rpi.yaml\n create mode 100644 src/libcamera/control_ranges.yaml"}