[{"id":31676,"web_url":"https://patchwork.libcamera.org/comment/31676/","msgid":"<172851252955.532453.5063943260809806935@ping.linuxembedded.co.uk>","date":"2024-10-09T22:22:09","subject":"Re: [PATCH 2/2] libcamera: Add V4L2VideoDevice::getCachedFormat","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Harvey Yang (2024-10-09 20:58:51)\n> In the upcoming mtkisp7 pipeline handler, it needs to access the cached\n> format from a derived class. This patch adds a protected getter to allow\n> that.\n\n\"A derived class\" sounds ... well - what is deriving from a\nV4L2VideoDevice. We normally use encapsulation for these classes, not\nderivation... ?\n\nAre you making some sort of specialisation of a V4L2VideoDevice that\nsomehow doesn't use the standard V4L2 API? or something else that makes\nit 'not a V4L2VideoDevice' ?\n\n\n> Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> ---\n>  include/libcamera/internal/v4l2_videodevice.h | 2 ++\n>  src/libcamera/v4l2_videodevice.cpp            | 5 +++++\n>  2 files changed, 7 insertions(+)\n> \n> diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h\n> index 9f53e37cd..389276302 100644\n> --- a/include/libcamera/internal/v4l2_videodevice.h\n> +++ b/include/libcamera/internal/v4l2_videodevice.h\n> @@ -241,6 +241,8 @@ public:\n>  protected:\n>         std::string logPrefix() const override;\n>  \n> +       V4L2DeviceFormat getCachedFormat() { return format_; }\n\nWe don't normally call accessors 'cached'. Is this specifically cached\nor would it be wrong to just name this getFormat()? Would that imply\nthat the function should call down to the device and get the format\nperhaps ??\n\nIn fact, I don't think we usually prefix 'get' either so it could just\nbe\n\tV4L2DeviceFormat format() { return format_; }\n\n\n\n> +\n>  private:\n>         LIBCAMERA_DISABLE_COPY(V4L2VideoDevice)\n>  \n> diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp\n> index 1110fb535..1f6ad96c1 100644\n> --- a/src/libcamera/v4l2_videodevice.cpp\n> +++ b/src/libcamera/v4l2_videodevice.cpp\n> @@ -2113,6 +2113,11 @@ V4L2VideoDevice::fromEntityName(const MediaDevice *media,\n>         return std::make_unique<V4L2VideoDevice>(mediaEntity);\n>  }\n>  \n> +/**\n> + * \\fn V4L2VideoDevice::getCachedFormat()\n> + * \\return Cached \\a V4L2VideoDevice::format_\n\nAnd then I would state that this returns the format or perhaps returns\nthe current format;\n\nWhich could at least be expanded on, or clarified in the \\brief\n\n> + */\n> +\n>  /**\n>   * \\brief Convert \\a PixelFormat to a V4L2PixelFormat supported by the device\n>   * \\param[in] pixelFormat The PixelFormat to convert\n> -- \n> 2.47.0.rc0.187.ge670bccf7e-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 6DFE3C32E0\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  9 Oct 2024 22:22:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6224C63538;\n\tThu, 10 Oct 2024 00:22:15 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A9995618C5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Oct 2024 00:22:12 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CA57D226;\n\tThu, 10 Oct 2024 00:20:34 +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=\"nAvDXVrf\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1728512434;\n\tbh=Y9YrW41vKSou/JMPS6ciqsJ5jahNEGbtWs83oaXs0ZY=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=nAvDXVrfVmdlHM1BbtR4O5kCJpX5VWGAvz8dOPaAdIIdUwKNfc0oCh5g8IrTTTLf/\n\tjh0yyBzeyv/Yf4UJqHCfCYsX2lBoB36XggVXOXpvP5sclYBjpMHY7dOEDnA2Rm631c\n\tompWHTaYwe9mltcHMRk2/sckSLHs8OTu3fKx7cik=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20241009200142.3213065-3-chenghaoyang@chromium.org>","References":"<20241009200142.3213065-1-chenghaoyang@chromium.org>\n\t<20241009200142.3213065-3-chenghaoyang@chromium.org>","Subject":"Re: [PATCH 2/2] libcamera: Add V4L2VideoDevice::getCachedFormat","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Harvey Yang <chenghaoyang@chromium.org>","To":"Harvey Yang <chenghaoyang@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 09 Oct 2024 23:22:09 +0100","Message-ID":"<172851252955.532453.5063943260809806935@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":31717,"web_url":"https://patchwork.libcamera.org/comment/31717/","msgid":"<CAEB1ahtf6dQH28243Eb86B30ZVPgYnzSO8nzRR3EjBt-64U9Hw@mail.gmail.com>","date":"2024-10-11T16:36:48","subject":"Re: [PATCH 2/2] libcamera: Add V4L2VideoDevice::getCachedFormat","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Kieran,\n\n\nOn Thu, Oct 10, 2024 at 6:22 AM Kieran Bingham\n<kieran.bingham@ideasonboard.com> wrote:\n>\n> Quoting Harvey Yang (2024-10-09 20:58:51)\n> > In the upcoming mtkisp7 pipeline handler, it needs to access the cached\n> > format from a derived class. This patch adds a protected getter to allow\n> > that.\n>\n> \"A derived class\" sounds ... well - what is deriving from a\n> V4L2VideoDevice. We normally use encapsulation for these classes, not\n> derivation... ?\n>\n> Are you making some sort of specialisation of a V4L2VideoDevice that\n> somehow doesn't use the standard V4L2 API? or something else that makes\n> it 'not a V4L2VideoDevice' ?\n\nYeah we overwrite V4L2VideoDevice in mtkisp7:\nhttps://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5675081\n\nI'll check with Han-lin why it's necessary though...\n\n>\n>\n> > Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> > ---\n> >  include/libcamera/internal/v4l2_videodevice.h | 2 ++\n> >  src/libcamera/v4l2_videodevice.cpp            | 5 +++++\n> >  2 files changed, 7 insertions(+)\n> >\n> > diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h\n> > index 9f53e37cd..389276302 100644\n> > --- a/include/libcamera/internal/v4l2_videodevice.h\n> > +++ b/include/libcamera/internal/v4l2_videodevice.h\n> > @@ -241,6 +241,8 @@ public:\n> >  protected:\n> >         std::string logPrefix() const override;\n> >\n> > +       V4L2DeviceFormat getCachedFormat() { return format_; }\n>\n> We don't normally call accessors 'cached'. Is this specifically cached\n> or would it be wrong to just name this getFormat()? Would that imply\n> that the function should call down to the device and get the format\n> perhaps ??\n>\n> In fact, I don't think we usually prefix 'get' either so it could just\n> be\n>         V4L2DeviceFormat format() { return format_; }\n\nI'm not sure if `format()` makes more sense, as there's\n`V4L2VideoDevice::getFormat()`, which seems to get info from V4L2\nAPI directly. `format_`, however, is the format that was set to V4L2 before.\n\nWDYT?\n\nBR,\nHarvey\n\n\n>\n>\n>\n> > +\n> >  private:\n> >         LIBCAMERA_DISABLE_COPY(V4L2VideoDevice)\n> >\n> > diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp\n> > index 1110fb535..1f6ad96c1 100644\n> > --- a/src/libcamera/v4l2_videodevice.cpp\n> > +++ b/src/libcamera/v4l2_videodevice.cpp\n> > @@ -2113,6 +2113,11 @@ V4L2VideoDevice::fromEntityName(const MediaDevice *media,\n> >         return std::make_unique<V4L2VideoDevice>(mediaEntity);\n> >  }\n> >\n> > +/**\n> > + * \\fn V4L2VideoDevice::getCachedFormat()\n> > + * \\return Cached \\a V4L2VideoDevice::format_\n>\n> And then I would state that this returns the format or perhaps returns\n> the current format;\n>\n> Which could at least be expanded on, or clarified in the \\brief\n>\n> > + */\n> > +\n> >  /**\n> >   * \\brief Convert \\a PixelFormat to a V4L2PixelFormat supported by the device\n> >   * \\param[in] pixelFormat The PixelFormat to convert\n> > --\n> > 2.47.0.rc0.187.ge670bccf7e-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 89738C326B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Oct 2024 16:37:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8408A65370;\n\tFri, 11 Oct 2024 18:37:02 +0200 (CEST)","from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com\n\t[IPv6:2a00:1450:4864:20::22c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3F40B6353B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Oct 2024 18:37:01 +0200 (CEST)","by mail-lj1-x22c.google.com with SMTP id\n\t38308e7fff4ca-2fad100dd9fso34734741fa.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Oct 2024 09:37:01 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"HuuDaZln\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1728664620; x=1729269420;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=eLANcodpas3f+U0rPMtrPRkSyteS3UU2BH9xztTrPf8=;\n\tb=HuuDaZlnTJLIgoHIJQHZ4f1kld22TFtk+WS5fhnhtAbFETOmW8vEtTG7BjbgvQdQEE\n\tdpQdCyUXJxsxmZ4n2/2C6Ur/7fD3INdjl7xU8OzKlGQu3LYbzqLOdNOH583A8dQ9ZGgk\n\t+zbk9QzoikTd3E36JV6NBzOBeSOOS/kfm9vfo=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1728664620; x=1729269420;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=eLANcodpas3f+U0rPMtrPRkSyteS3UU2BH9xztTrPf8=;\n\tb=tZupXzWgLB7C9qj0kAjZJJ7wNDt0Zlm9O6jnMMqfMxsRTjfYpmux35qvAFASrZR/bj\n\t6baovk+wx4Jbe2JaCRwUwfP/ZzTOBfnoh+q5JT0OaI4m4nuMUvYIKWmGzC80ZtXQkmmT\n\tc57bRop4ZSYCmbxATRb+/OKvkYAvdwDoRPLTwqwHGw8JoDIyRoU9Wq7YgdSJ0UJYyg5z\n\tsvd5SG9VP22ojyUFYrDpHVkmitovisJOZmbnk+8G1kGjzOV9xf6U+5PGIcdAKzZQ6mr5\n\tnkWizzt9vt4ZehIJFM3dF3+qy99Eq09UjdbbpzC6lw7y20FmvBZG9msUAQ/pCT+s2HH+\n\tCpDg==","X-Gm-Message-State":"AOJu0YxZJYPvuKEuV0h4xsi9VmGAqxeIigfs8Ob5CCBp2mxNtCmOCRiu\n\thNcjfKYi7OWHfsvY6mA0KPkoIBLlJfSqLKJM5Uaikgz61/vGRcLOgHMF7B0cWPvpaSCBIzDJJ1A\n\t3/PTMl2cbuXS7ccWlwL8WWgGuJc1ZU2GrXVaBp28gXtFZ/y7n4w==","X-Google-Smtp-Source":"AGHT+IGdbzSspkVBSIKLtnj7Np2MKoT8zgD2ict40kNbJtBi9JOXFVS5XnJOgASVLyEYmozC/TuADmueoLAmHvp7hM0=","X-Received":"by 2002:a05:651c:b0d:b0:2fa:d75b:2ef5 with SMTP id\n\t38308e7fff4ca-2fb3f2c3c40mr1872501fa.32.1728664620057;\n\tFri, 11 Oct 2024 09:37:00 -0700 (PDT)","MIME-Version":"1.0","References":"<20241009200142.3213065-1-chenghaoyang@chromium.org>\n\t<20241009200142.3213065-3-chenghaoyang@chromium.org>\n\t<172851252955.532453.5063943260809806935@ping.linuxembedded.co.uk>","In-Reply-To":"<172851252955.532453.5063943260809806935@ping.linuxembedded.co.uk>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Sat, 12 Oct 2024 00:36:48 +0800","Message-ID":"<CAEB1ahtf6dQH28243Eb86B30ZVPgYnzSO8nzRR3EjBt-64U9Hw@mail.gmail.com>","Subject":"Re: [PATCH 2/2] libcamera: Add V4L2VideoDevice::getCachedFormat","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","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":31756,"web_url":"https://patchwork.libcamera.org/comment/31756/","msgid":"<CAEB1ahs8k-Fy=7PtDk-K5PJ2YtjmWNKRbnuZDYk2hi9EeoF6Dg@mail.gmail.com>","date":"2024-10-16T10:00:24","subject":"Re: [PATCH 2/2] libcamera: Add V4L2VideoDevice::getCachedFormat","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Kieran and developers,\n\nOn Sat, Oct 12, 2024 at 12:36 AM Cheng-Hao Yang\n<chenghaoyang@chromium.org> wrote:\n>\n> Hi Kieran,\n>\n>\n> On Thu, Oct 10, 2024 at 6:22 AM Kieran Bingham\n> <kieran.bingham@ideasonboard.com> wrote:\n> >\n> > Quoting Harvey Yang (2024-10-09 20:58:51)\n> > > In the upcoming mtkisp7 pipeline handler, it needs to access the cached\n> > > format from a derived class. This patch adds a protected getter to allow\n> > > that.\n> >\n> > \"A derived class\" sounds ... well - what is deriving from a\n> > V4L2VideoDevice. We normally use encapsulation for these classes, not\n> > derivation... ?\n> >\n> > Are you making some sort of specialisation of a V4L2VideoDevice that\n> > somehow doesn't use the standard V4L2 API? or something else that makes\n> > it 'not a V4L2VideoDevice' ?\n>\n> Yeah we overwrite V4L2VideoDevice in mtkisp7:\n> https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5675081\n>\n> I'll check with Han-lin why it's necessary though...\n\nI've checked with Han-lin, and I found why we need this change:\nIn the following CL [1], we're trying to use VIDIOC_CREATE_BUFS to create\nbuffers with different formats within the same ImgSys, a V4L2VideoDevice.\n\nThe original API doesn't allow that, so the CL abstracts V4L2BufferCache [2],\nlets ImgsysVideoDevice inherit V4L2VideoDevice [3], and use another cache\nthat contains multiple `SimpleV4L2BufferCache`s [4] (which is mostly the\noriginal V4L2BufferCache, with an extra offset [5] that allows indices starting\nfrom a non-zero index).\n\nI know it's controversial, but let's discuss here what would be the best\napproach to support multiple formats. Let me know your concerns and\npreferences.\n\nBR,\nHarvey\n\n\n[1]: https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5675081\n[2]: https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5675081/1/include/libcamera/internal/v4l2_videodevice.h\n[3]: https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5675081/1/src/libcamera/pipeline/mtkisp7/imgsys/imgsys.h\n[4]: https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5675081/1/src/libcamera/pipeline/mtkisp7/imgsys/imgsys.h#65\n[5]: https://chromium-review.googlesource.com/c/chromiumos/third_party/libcamera/+/5675081/1/include/libcamera/internal/v4l2_videodevice.h#174\n\n>\n> >\n> >\n> > > Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>\n> > > ---\n> > >  include/libcamera/internal/v4l2_videodevice.h | 2 ++\n> > >  src/libcamera/v4l2_videodevice.cpp            | 5 +++++\n> > >  2 files changed, 7 insertions(+)\n> > >\n> > > diff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h\n> > > index 9f53e37cd..389276302 100644\n> > > --- a/include/libcamera/internal/v4l2_videodevice.h\n> > > +++ b/include/libcamera/internal/v4l2_videodevice.h\n> > > @@ -241,6 +241,8 @@ public:\n> > >  protected:\n> > >         std::string logPrefix() const override;\n> > >\n> > > +       V4L2DeviceFormat getCachedFormat() { return format_; }\n> >\n> > We don't normally call accessors 'cached'. Is this specifically cached\n> > or would it be wrong to just name this getFormat()? Would that imply\n> > that the function should call down to the device and get the format\n> > perhaps ??\n> >\n> > In fact, I don't think we usually prefix 'get' either so it could just\n> > be\n> >         V4L2DeviceFormat format() { return format_; }\n>\n> I'm not sure if `format()` makes more sense, as there's\n> `V4L2VideoDevice::getFormat()`, which seems to get info from V4L2\n> API directly. `format_`, however, is the format that was set to V4L2 before.\n>\n> WDYT?\n>\n> BR,\n> Harvey\n>\n>\n> >\n> >\n> >\n> > > +\n> > >  private:\n> > >         LIBCAMERA_DISABLE_COPY(V4L2VideoDevice)\n> > >\n> > > diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp\n> > > index 1110fb535..1f6ad96c1 100644\n> > > --- a/src/libcamera/v4l2_videodevice.cpp\n> > > +++ b/src/libcamera/v4l2_videodevice.cpp\n> > > @@ -2113,6 +2113,11 @@ V4L2VideoDevice::fromEntityName(const MediaDevice *media,\n> > >         return std::make_unique<V4L2VideoDevice>(mediaEntity);\n> > >  }\n> > >\n> > > +/**\n> > > + * \\fn V4L2VideoDevice::getCachedFormat()\n> > > + * \\return Cached \\a V4L2VideoDevice::format_\n> >\n> > And then I would state that this returns the format or perhaps returns\n> > the current format;\n> >\n> > Which could at least be expanded on, or clarified in the \\brief\n> >\n> > > + */\n> > > +\n> > >  /**\n> > >   * \\brief Convert \\a PixelFormat to a V4L2PixelFormat supported by the device\n> > >   * \\param[in] pixelFormat The PixelFormat to convert\n> > > --\n> > > 2.47.0.rc0.187.ge670bccf7e-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 DEB06C326C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 16 Oct 2024 10:00:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 67A4165383;\n\tWed, 16 Oct 2024 12:00:38 +0200 (CEST)","from mail-lj1-x231.google.com (mail-lj1-x231.google.com\n\t[IPv6:2a00:1450:4864:20::231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 01BBA6537E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 16 Oct 2024 12:00:37 +0200 (CEST)","by mail-lj1-x231.google.com with SMTP id\n\t38308e7fff4ca-2fb59652cb9so22986731fa.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 16 Oct 2024 03:00:36 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"Rttv2WZa\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1729072836; x=1729677636;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=O4f3tm+teTLo2aqpeHkAH/CxzyaiFcNDhwLvu7jUU9g=;\n\tb=Rttv2WZaBBu0/3enMsd5c0b+vcy7SJg3oeP9Qj1AUSXHV9FbyYS6KzIl/khB1ziKFK\n\t+TtqthXZzyH8M+bCFgUNEi7m6aYgzK2VSP5eyJIdlUS7EdEYy+iZK99GCvLXV8Z7HO7G\n\tznv9z7E6w1ETHe6NTyZTC/fHVLZpVBbJp5ldk=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1729072836; x=1729677636;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=O4f3tm+teTLo2aqpeHkAH/CxzyaiFcNDhwLvu7jUU9g=;\n\tb=oGWcAwFe93HB4Lbf7uTq5AF7AKKuTvWWpiRUX5YIORMGFq7F9ZgKNchlgWKhq/q0UN\n\tSZHaAyVy5aRLvS79Xr9wha/CihDbhO81W2BaGbwazObPQYLJxMy6uWlDL38RFBpAxeI+\n\t+SEmVmqcBFUqkV7W9ao1IquJpXhQN2U0tRaEq0B3uymlZEO7PSVPGoXk9CgpegiNrMMm\n\tIeyytHBb8fL1vq3ZdB7GWJKsgOnLS3N+kHZNbe40mEjVyiE+zgH/u/kWgag4ImQBupGq\n\tc5LSKtBzh0yMIFyPPuET/RAJM1Iwn1PGe8YE8rOL1wp2qZ70y9aSq35fKj+h5utXMGpU\n\trXjg==","X-Gm-Message-State":"AOJu0Ywz8GYnbF0U3X5irzUKCNHG1bhtogTPvb2nrpOLWF+7M4ydYC6W\n\tYz3JWUBZ0HECFW5JmRHbabEEeGQHWwEz+SI60Eb4vNBcO58JaySlCrVG6iQ+wzwTgWWr7p6Ogsq\n\tXaq6ac7Iu+M1YSxBSUCg9QY6vnVHaZKIxAQjdhsXxYB37+/RFEw==","X-Google-Smtp-Source":"AGHT+IFHy2M4WBilFPeslsk15TsZqeLyzr/3Nor2GjKRrRHIG1DDy15DqUiA9pAd573P2dWb7xXs75s1jyNxb9Nz0r4=","X-Received":"by 2002:a2e:4a01:0:b0:2fb:4bee:47ec with SMTP id\n\t38308e7fff4ca-2fb4bee4870mr43857861fa.33.1729072835952;\n\tWed, 16 Oct 2024 03:00:35 -0700 (PDT)","MIME-Version":"1.0","References":"<20241009200142.3213065-1-chenghaoyang@chromium.org>\n\t<20241009200142.3213065-3-chenghaoyang@chromium.org>\n\t<172851252955.532453.5063943260809806935@ping.linuxembedded.co.uk>\n\t<CAEB1ahtf6dQH28243Eb86B30ZVPgYnzSO8nzRR3EjBt-64U9Hw@mail.gmail.com>","In-Reply-To":"<CAEB1ahtf6dQH28243Eb86B30ZVPgYnzSO8nzRR3EjBt-64U9Hw@mail.gmail.com>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Wed, 16 Oct 2024 18:00:24 +0800","Message-ID":"<CAEB1ahs8k-Fy=7PtDk-K5PJ2YtjmWNKRbnuZDYk2hi9EeoF6Dg@mail.gmail.com>","Subject":"Re: [PATCH 2/2] libcamera: Add V4L2VideoDevice::getCachedFormat","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","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>"}}]