{"id":3371,"url":"https://patchwork.libcamera.org/api/patches/3371/?format=json","web_url":"https://patchwork.libcamera.org/patch/3371/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/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":"<20200403145305.10288-2-naush@raspberrypi.com>","date":"2020-04-03T14:53:01","name":"[libcamera-devel,v3,1/5] libcamera: controls: Updates to gain and exposure controls","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"240f2bee8262facf93a9c510db3a0cdbf7c0e805","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/?format=json","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/3371/mbox/","series":[{"id":794,"url":"https://patchwork.libcamera.org/api/series/794/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=794","date":"2020-04-03T14:53:00","name":"Patchset for libcamera controls","version":3,"mbox":"https://patchwork.libcamera.org/series/794/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/3371/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/3371/checks/","tags":{},"headers":{"Return-Path":"<naush@raspberrypi.com>","Received":["from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com\n\t[IPv6:2a00:1450:4864:20::42c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 30B9D600FA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  3 Apr 2020 16:53:29 +0200 (CEST)","by mail-wr1-x42c.google.com with SMTP id c7so8851756wrx.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 03 Apr 2020 07:53:29 -0700 (PDT)","from naushir-VirtualBox.patuck.local ([88.97.76.4])\n\tby smtp.gmail.com with ESMTPSA id\n\tu5sm13559469wrp.81.2020.04.03.07.53.28\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 03 Apr 2020 07:53:28 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"XPybDtKL\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=qm2VzOK8kBM1KF0dCYHY80QGq25ZUHsY21ENsg6U3bs=;\n\tb=XPybDtKL5XmuwS+p0paiak0gnNm3zcIMIg6xf+p483momuoqNalQx2p1kjwi9UcKao\n\tQb8gWr1UKT9bA+oNm/yta0brPf0uWIiVBkdGdrzI5CsyaNANAzJCBRow2tZJ44tn/S4F\n\t7F+dYN0VM0L9pxmDO/EfdmQN17dEHQ2Lfo1n5KtRl7idMgsp/fbEbYBZ3RNU49dZX1eQ\n\tt02xu3gLsdfHdO7iS7dbrPvNJYN+hJImp5xeE5IyLdQJXHjtkjboKjUWYwSmjjPyE54/\n\t6Zuq8C6w6dnWWcEGWpY5xT/cl99D7Kv39bAJjchrk54wcwkaUiX9l8jaUHLBUcGbDmp5\n\tAfog==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=qm2VzOK8kBM1KF0dCYHY80QGq25ZUHsY21ENsg6U3bs=;\n\tb=QlRL79bf306Y4gM/cBNUp0H4g1h6v90ojro9cQvn9atYjMSit8eP4ltvWqizX8d6Af\n\tDSBw7dbISc6DuaHhyxp1jRDVn9DXuWMNNkfcF6whvj+azEkOYnSbPbw3PuiuQKKFnLJe\n\tFP4RCIyaR8B+d5w1xvyZcD2otHfmt4t2gcfVfNW6hifrc9QUX6sYiNb9+GXZ9K4kF5mj\n\tcndNRyLRNHuv8dCW8SEnko5bBFSN/Dp/zDB+32Cy4vte+vYkSlbUs5Kukvf14iFR6RAm\n\tGFlWWN91odK2o7AZqRqPSgumT7SWH1UIraPBI3h0yPv/KJO64TGPXYP86lep6Jc0kIKW\n\tXOgw==","X-Gm-Message-State":"AGi0Pua/Y0VQX8qcHiGoq8gfzq1EwAkaa1rX9LGKKAQBYRjkKI70V/3v\n\trgiYoEgXSe3XvCtPmiVaeoUPctdOSQbPwA==","X-Google-Smtp-Source":"APiQypL8s/a1lgZIZGlrLxLmCOiuu3bfpGnMM9vnRnSNOABoDeReZLkdfvHd0ZAS2jIb2dgE+rRPSA==","X-Received":"by 2002:adf:e50c:: with SMTP id\n\tj12mr9655954wrm.154.1585925608750; \n\tFri, 03 Apr 2020 07:53:28 -0700 (PDT)","From":"Naushir Patuck <naush@raspberrypi.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Fri,  3 Apr 2020 15:53:01 +0100","Message-Id":"<20200403145305.10288-2-naush@raspberrypi.com>","X-Mailer":"git-send-email 2.17.1","In-Reply-To":"<20200403145305.10288-1-naush@raspberrypi.com>","References":"<20200403145305.10288-1-naush@raspberrypi.com>","Subject":"[libcamera-devel] [PATCH v3 1/5] libcamera: controls: Updates to\n\tgain and exposure controls","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>","X-List-Received-Date":"Fri, 03 Apr 2020 14:53:29 -0000"},"content":"Rename:\nManualExposure -> ExposureTime\nManualGain -> AnalogueGain\n\nUse micro-seconds units for ExposureTime. This is changed from milli-\nseconds. The latter would not allow very low exposure times.\n\nAnalogueGain switch to use a float to allow fractional gain adjustments.\n\nSigned-off-by: Naushir Patuck <naush@raspberrypi.com>\n---\n src/libcamera/control_ids.yaml               | 20 ++++++++++++++------\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp |  8 ++++----\n 2 files changed, 18 insertions(+), 10 deletions(-)","diff":"diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\nindex 4befec74..839eea76 100644\n--- a/src/libcamera/control_ids.yaml\n+++ b/src/libcamera/control_ids.yaml\n@@ -10,7 +10,7 @@ controls:\n       description: |\n         Enable or disable the AE.\n \n-        \\sa ManualExposure\n+        \\sa ExposureTime AnalogueGain\n \n   - AeLocked:\n       type: bool\n@@ -42,12 +42,20 @@ controls:\n       type: int32_t\n       description: Specify a fixed saturation parameter\n \n-  - ManualExposure:\n+  - ExposureTime:\n       type: int32_t\n-      description: Specify a fixed exposure time in milli-seconds\n+      description: |\n+        Exposure time (shutter speed) for the frame applied in the sensor\n+        device. This value is specified in micro-seconds.\n \n-  - ManualGain:\n-      type: int32_t\n-      description: Specify a fixed gain parameter\n+        \\sa AnalogueGain AeEnable\n+\n+  - AnalogueGain:\n+      type: float\n+      description: |\n+        Analogue gain value applied in the sensor device.\n+        The value of the control specifies the gain multiplier applied to all\n+        colour channels. This value cannot be lower than 1.0.\n \n+        \\sa ExposureTime AeEnable\n ...\ndiff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\nindex ffbddf27..d7df95e4 100644\n--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n@@ -251,10 +251,10 @@ int PipelineHandlerUVC::processControls(UVCCameraData *data, Request *request)\n \t\t\tcontrols.set(V4L2_CID_CONTRAST, value);\n \t\t} else if (id == controls::Saturation) {\n \t\t\tcontrols.set(V4L2_CID_SATURATION, value);\n-\t\t} else if (id == controls::ManualExposure) {\n+\t\t} else if (id == controls::ExposureTime) {\n \t\t\tcontrols.set(V4L2_CID_EXPOSURE_AUTO, static_cast<int32_t>(1));\n \t\t\tcontrols.set(V4L2_CID_EXPOSURE_ABSOLUTE, value);\n-\t\t} else if (id == controls::ManualGain) {\n+\t\t} else if (id == controls::AnalogueGain) {\n \t\t\tcontrols.set(V4L2_CID_GAIN, value);\n \t\t}\n \t}\n@@ -364,10 +364,10 @@ int UVCCameraData::init(MediaEntity *entity)\n \t\t\tid = &controls::Saturation;\n \t\t\tbreak;\n \t\tcase V4L2_CID_EXPOSURE_ABSOLUTE:\n-\t\t\tid = &controls::ManualExposure;\n+\t\t\tid = &controls::ExposureTime;\n \t\t\tbreak;\n \t\tcase V4L2_CID_GAIN:\n-\t\t\tid = &controls::ManualGain;\n+\t\t\tid = &controls::AnalogueGain;\n \t\t\tbreak;\n \t\tdefault:\n \t\t\tcontinue;\n","prefixes":["libcamera-devel","v3","1/5"]}