[{"id":28492,"web_url":"https://patchwork.libcamera.org/comment/28492/","msgid":"<22cae05f-65fb-47c5-b6e6-4d7fd9ed98af@gmail.com>","date":"2024-01-19T11:36:27","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_sensor: Cache pixel\n\trate","submitter":{"id":179,"url":"https://patchwork.libcamera.org/api/people/179/","name":"Andrei Konovalov","email":"andrey.konovalov.ynk@gmail.com"},"content":"Hi Paul,\n\nIt doesn't look like it will always work, as there is at least one sensor/driver\nfor which the pixel rate depends on the mode:\n\nhttps://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L46\n\nhttps://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L692\nhttps://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L715\nhttps://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L738\nhttps://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L738\n\n\nThanks,\nAndrei\n\nOn 19.01.2024 14:07, Paul Elder via libcamera-devel wrote:\n> Cache the pixel rate at initialization time instead of fetching it from\n> the v4l2 subdev every time it's needed.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>   include/libcamera/internal/camera_sensor.h | 2 ++\n>   src/libcamera/camera_sensor.cpp            | 5 ++++-\n>   2 files changed, 6 insertions(+), 1 deletion(-)\n> \n> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\n> index 60a8b106d..da3bf12b3 100644\n> --- a/include/libcamera/internal/camera_sensor.h\n> +++ b/include/libcamera/internal/camera_sensor.h\n> @@ -105,6 +105,8 @@ private:\n>   \tstd::string model_;\n>   \tstd::string id_;\n>   \n> +\tuint64_t pixelRate_;\n> +\n>   \tV4L2Subdevice::Formats formats_;\n>   \tstd::vector<unsigned int> mbusCodes_;\n>   \tstd::vector<Size> sizes_;\n> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\n> index 0ef78d9c8..33fdb4c8e 100644\n> --- a/src/libcamera/camera_sensor.cpp\n> +++ b/src/libcamera/camera_sensor.cpp\n> @@ -515,6 +515,9 @@ int CameraSensor::initProperties()\n>   \t\tproperties_.set(properties::draft::ColorFilterArrangement, cfa);\n>   \t}\n>   \n> +\tControlList ctrls = subdev_->getControls({ V4L2_CID_PIXEL_RATE });\n> +\tpixelRate_ = ctrls.get(V4L2_CID_PIXEL_RATE).get<int64_t>();\n> +\n>   \treturn 0;\n>   }\n>   \n> @@ -1080,7 +1083,7 @@ int CameraSensor::sensorInfo(IPACameraSensorInfo *info) const\n>   \t\treturn -EINVAL;\n>   \t}\n>   \n> -\tinfo->pixelRate = ctrls.get(V4L2_CID_PIXEL_RATE).get<int64_t>();\n> +\tinfo->pixelRate = pixelRate_;\n>   \n>   \tconst ControlInfo hblank = ctrls.infoMap()->at(V4L2_CID_HBLANK);\n>   \tinfo->minLineLength = info->outputSize.width + hblank.min().get<int32_t>();","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 95750BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 19 Jan 2024 11:36:31 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0B0DC61D4C;\n\tFri, 19 Jan 2024 12:36:31 +0100 (CET)","from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com\n\t[IPv6:2a00:1450:4864:20::52e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8A0EE61D3C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 19 Jan 2024 12:36:29 +0100 (CET)","by mail-ed1-x52e.google.com with SMTP id\n\t4fb4d7f45d1cf-559edcee495so730134a12.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 19 Jan 2024 03:36:29 -0800 (PST)","from [192.168.118.26] ([87.116.163.142])\n\tby smtp.gmail.com with ESMTPSA id\n\tdf8-20020a05640230a800b0055a5ff1f945sm563329edb.36.2024.01.19.03.36.28\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tFri, 19 Jan 2024 03:36:28 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1705664191;\n\tbh=3jmVUtdjXPcV4VqwPMyfHWNi0bDYOsg4eHQUFpbX6Js=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=br5GM9vCtPrlQ9Mq4magREU2bpRGFIl9Z2q/bFSpinZ7X+o7gCDOTs9sW1C+tbDYb\n\tRA0pW6MajzSfR/a6mE/h/JCJ3pxPqVf+CvbTD4OeGC+0RyvUP1EeMHz+w/HjvxuHAU\n\tffWXm2emELGMJpPwjZosGR6hvEgf0kHpopCf7VqFz0DAkE/R8lVaQQkSjaw88IkCMh\n\tiBNtB6yHH4Pq9P0R7WDI8JJbNXr3+17ezWnpwcVKKXVm/5Z5maYFL8E9a0NY0wYjAO\n\tSv2ASwfmtuYFa+ewenePbwQ440u6BW9ZZknSEpiK/NdmHM8fBcZ1kDjUGcp1tGua/V\n\t116OfHf2KmWtA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20230601; t=1705664189; x=1706268989;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:from:references:to\n\t:content-language:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=4IFTtTDbEo2Npf5tmazlvaa+VPLPmHpNSIiwlYBMKvc=;\n\tb=JK2y5fttUU7T3jNrqSfuSWuuw+wxAgDGrMd7gHakw3vCnmP+VJM/0bYcTKQLPqdEPK\n\tSmBsac/itoNWVRERcHc8bx7/rBt3IcRF5L1oss+bQsFAr4Uw6wqqJVDRgQ6aNbb04K0c\n\tJk8eAtOsLadCNeV4/ULYERJwEetWsdF3Lpx+E0DFg3ujYujLp0YVQO0oyoyqvKWa0Jc1\n\tcAyI2eX0VuKBmtZcODaFqwi+a2JJ0V8hWlWR2zB649kKd1bYOrbq9gDldw8I6zigEo2b\n\tshG+LwjmJkJZouRxHqjpvDfe1ZeeRgebqXOQI0ci9kjsk9JQSv7wORm+2v5zzUzj+Rh0\n\tdJiw=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"JK2y5ftt\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1705664189; x=1706268989;\n\th=content-transfer-encoding:in-reply-to:from:references:to\n\t:content-language:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=4IFTtTDbEo2Npf5tmazlvaa+VPLPmHpNSIiwlYBMKvc=;\n\tb=GX3JyELWMSHgh/JjIlWjWCLZSTY2vj2M0EdV6PCsnF2Fsjv9jFYoQNJbXzeiuICMFT\n\tEw1bq4/jSpqS8RmJBt0M+P4NyHL2KTnTEt2cCjPpse2rXzkXAIafeEDLYEQ/m2V619im\n\tAJW9YZkZK+m9NRB5kfSL0HAohJfr8+oROxC5Djp2LYDShM2H1ydGJY3iwLyAkZ9JpEvP\n\tMbvlutK30dZ4sRSosEK7qNk00Hl0nHVMkM0tyNTMmcI3+e7Y+rvHGbUUTXvpIdfQL6V0\n\t0E6gFa1KrqrDrrrHL8lOsiIVVoslYlsuPsAiPy0AAy8vIMJd8iIobtMxqaao9RMnQcqr\n\taYcQ==","X-Gm-Message-State":"AOJu0Yy/pd1QnEzZwCoVE0YVMc3b+nSLN4kzWXSU3VSvLBPsuOPC/xOG\n\t0LSONZx6/HP9HJEYVV/h7ffQ/S7tq1+FntU+BcuFUu5yNz7Q8L5rzfmd32+g","X-Google-Smtp-Source":"AGHT+IHQv8jT/VHHEco7/Sos7ut4DNjmVUgcQAMjbax53KSWlJVYqRWvWO3vODiirbTDeJV7UupiPA==","X-Received":"by 2002:aa7:d682:0:b0:55a:1f87:d35 with SMTP id\n\td2-20020aa7d682000000b0055a1f870d35mr1141836edr.10.1705664188788; \n\tFri, 19 Jan 2024 03:36:28 -0800 (PST)","Message-ID":"<22cae05f-65fb-47c5-b6e6-4d7fd9ed98af@gmail.com>","Date":"Fri, 19 Jan 2024 14:36:27 +0300","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Content-Language":"en-US","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20240119110708.377399-1-paul.elder@ideasonboard.com>","In-Reply-To":"<20240119110708.377399-1-paul.elder@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_sensor: Cache pixel\n\trate","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":"Andrei Konovalov via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Andrei Konovalov <andrey.konovalov.ynk@gmail.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28515,"web_url":"https://patchwork.libcamera.org/comment/28515/","msgid":"<Za5Iuhm19NVr6cFp@pyrite.rasen.tech>","date":"2024-01-22T10:51:38","subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_sensor: Cache pixel\n\trate","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Andrei,\n\nOn Fri, Jan 19, 2024 at 02:36:27PM +0300, Andrei Konovalov wrote:\n> Hi Paul,\n> \n> It doesn't look like it will always work, as there is at least one sensor/driver\n> for which the pixel rate depends on the mode:\n\nAh indeed that does seem to be the case.\n\nThanks for catching it.\n\n\nPaul\n\n> \n> https://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L46\n> \n> https://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L692\n> https://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L715\n> https://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L738\n> https://github.com/raspberrypi/linux/blob/rpi-6.1.y/drivers/media/i2c/imx708.c#L738\n> \n> \n> Thanks,\n> Andrei\n> \n> On 19.01.2024 14:07, Paul Elder via libcamera-devel wrote:\n> > Cache the pixel rate at initialization time instead of fetching it from\n> > the v4l2 subdev every time it's needed.\n> > \n> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> > ---\n> >   include/libcamera/internal/camera_sensor.h | 2 ++\n> >   src/libcamera/camera_sensor.cpp            | 5 ++++-\n> >   2 files changed, 6 insertions(+), 1 deletion(-)\n> > \n> > diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\n> > index 60a8b106d..da3bf12b3 100644\n> > --- a/include/libcamera/internal/camera_sensor.h\n> > +++ b/include/libcamera/internal/camera_sensor.h\n> > @@ -105,6 +105,8 @@ private:\n> >   \tstd::string model_;\n> >   \tstd::string id_;\n> > +\tuint64_t pixelRate_;\n> > +\n> >   \tV4L2Subdevice::Formats formats_;\n> >   \tstd::vector<unsigned int> mbusCodes_;\n> >   \tstd::vector<Size> sizes_;\n> > diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\n> > index 0ef78d9c8..33fdb4c8e 100644\n> > --- a/src/libcamera/camera_sensor.cpp\n> > +++ b/src/libcamera/camera_sensor.cpp\n> > @@ -515,6 +515,9 @@ int CameraSensor::initProperties()\n> >   \t\tproperties_.set(properties::draft::ColorFilterArrangement, cfa);\n> >   \t}\n> > +\tControlList ctrls = subdev_->getControls({ V4L2_CID_PIXEL_RATE });\n> > +\tpixelRate_ = ctrls.get(V4L2_CID_PIXEL_RATE).get<int64_t>();\n> > +\n> >   \treturn 0;\n> >   }\n> > @@ -1080,7 +1083,7 @@ int CameraSensor::sensorInfo(IPACameraSensorInfo *info) const\n> >   \t\treturn -EINVAL;\n> >   \t}\n> > -\tinfo->pixelRate = ctrls.get(V4L2_CID_PIXEL_RATE).get<int64_t>();\n> > +\tinfo->pixelRate = pixelRate_;\n> >   \tconst ControlInfo hblank = ctrls.infoMap()->at(V4L2_CID_HBLANK);\n> >   \tinfo->minLineLength = info->outputSize.width + hblank.min().get<int32_t>();","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 10702BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Jan 2024 10:51:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2D1DC62936;\n\tMon, 22 Jan 2024 11:51:48 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4B4FD628AD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jan 2024 11:51:47 +0100 (CET)","from pyrite.rasen.tech (h175-177-049-156.catv02.itscom.jp\n\t[175.177.49.156])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8261074A;\n\tMon, 22 Jan 2024 11:50:32 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Ay58mYF3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1705920633;\n\tbh=Rq6uKgEmSV6cmF49W3N3JeG5J1nQ37iC4qidZXlQcrQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Ay58mYF3TZQvrO1tHQzVA+LBCjPyJgfJ7cfPB7UUmpZIK4D8jOwcDmlrYgG2UNPP6\n\te4UVo6STFDhd9CI+nx6ZlkxjcH49wAOg9um/GimMXRbERxnHsoqWzaGjP1ZyYMh/qD\n\twAE26Gaf20gBYMbAeDcpe+36q62n5fYW3u+/ecVY=","Date":"Mon, 22 Jan 2024 19:51:38 +0900","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"Andrei Konovalov <andrey.konovalov.ynk@gmail.com>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: camera_sensor: Cache pixel\n\trate","Message-ID":"<Za5Iuhm19NVr6cFp@pyrite.rasen.tech>","References":"<20240119110708.377399-1-paul.elder@ideasonboard.com>\n\t<22cae05f-65fb-47c5-b6e6-4d7fd9ed98af@gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<22cae05f-65fb-47c5-b6e6-4d7fd9ed98af@gmail.com>","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]