[{"id":12408,"web_url":"https://patchwork.libcamera.org/comment/12408/","msgid":"<20200910104841.GG4095624@oden.dyn.berto.se>","date":"2020-09-10T10:48:41","subject":"Re: [libcamera-devel] [PATCH v3 05/11] android: camera_device:\n\tGenerate RAW resolutions","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nThanks for your patch.\n\nOn 2020-09-08 15:41:36 +0200, Jacopo Mondi wrote:\n> The resolutions supported for the RAW formats cannot be tested from\n> a list of known sizes like the processed ones. This is mainly due to the\n> fact RAW streams are produced by capturing frames at the CSI-2 receiver\n> output and their size corresponds to the sensor's native sizes.\n> \n> In order to obtain the RAW frame size generate a temporary\n> CameraConfiguration for the Role::StillCaptureRAW role and inspect the\n> map of StreamFormats returned by the pipeline handler.\n> \n> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n>  src/android/camera_device.h   |  2 ++\n>  2 files changed, 22 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 9d460906ab08..5f4b95987615 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -313,6 +313,17 @@ std::vector<Size> CameraDevice::filterYUVResolutions(CameraConfiguration *camera\n>  \treturn supportedResolutions;\n>  }\n>  \n> +std::vector<Size> CameraDevice::filterRawResolutions(const libcamera::PixelFormat &pixelFormat)\n> +{\n> +\tstd::unique_ptr<CameraConfiguration> cameraConfig =\n> +\t\tcamera_->generateConfiguration({ StillCaptureRaw });\n> +\tStreamConfiguration &cfg = cameraConfig->at(0);\n> +\tconst StreamFormats &formats = cfg.formats();\n> +\tstd::vector<Size> supportedResolutions = formats.sizes(pixelFormat);\n> +\n> +\treturn supportedResolutions;\n> +}\n> +\n>  /*\n>   * Initialize the format conversion map to translate from Android format\n>   * identifier to libcamera pixel formats and fill in the list of supported\n> @@ -457,9 +468,15 @@ int CameraDevice::initializeStreamConfigurations()\n>  \t\t\t\t<< camera3Format.name << \" to \"\n>  \t\t\t\t<< mappedFormat.toString();\n>  \n> -\t\tstd::vector<Size> resolutions = filterYUVResolutions(cameraConfig.get(),\n> -\t\t\t\t\t\t\t\t     mappedFormat,\n> -\t\t\t\t\t\t\t\t     cameraResolutions);\n> +\t\tstd::vector<Size> resolutions;\n> +\t\tconst PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);\n> +\t\tif (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)\n> +\t\t\tresolutions = filterRawResolutions(mappedFormat);\n> +\t\telse\n> +\t\t\tresolutions = filterYUVResolutions(cameraConfig.get(),\n> +\t\t\t\t\t\t\t   mappedFormat,\n> +\t\t\t\t\t\t\t   cameraResolutions);\n> +\n>  \t\tfor (const Size &res : resolutions) {\n>  \t\t\tstreamConfigurations_.push_back({ res, androidFormat });\n>  \n> diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> index 359a163ebab9..dc0ee664d443 100644\n> --- a/src/android/camera_device.h\n> +++ b/src/android/camera_device.h\n> @@ -97,6 +97,8 @@ private:\n>  \tfilterYUVResolutions(libcamera::CameraConfiguration *cameraConfig,\n>  \t\t\t     const libcamera::PixelFormat &pixelFormat,\n>  \t\t\t     const std::vector<libcamera::Size> &resolutions);\n> +\tstd::vector<libcamera::Size>\n> +\tfilterRawResolutions(const libcamera::PixelFormat &pixelFormat);\n>  \n>  \tstd::tuple<uint32_t, uint32_t> calculateStaticMetadataSize();\n>  \tlibcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);\n> -- \n> 2.28.0\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 AF525C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 10 Sep 2020 10:48:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 40D5C62D38;\n\tThu, 10 Sep 2020 12:48:44 +0200 (CEST)","from mail-lj1-x244.google.com (mail-lj1-x244.google.com\n\t[IPv6:2a00:1450:4864:20::244])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D85D962C8C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 12:48:42 +0200 (CEST)","by mail-lj1-x244.google.com with SMTP id v23so7582317ljd.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 03:48:42 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tt15sm1464492ljg.139.2020.09.10.03.48.41\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 10 Sep 2020 03:48:41 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"VNSSSpac\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=GTOSfZBM/RxnMr465co7k3S6+om/YOI50ZwpQI6RQVU=;\n\tb=VNSSSpacMkQC7F27ynEakIHXnxexIaarQy2Rs9I2qLnrBjxAsynwiJeANGgH21Zblb\n\t5BazknecBlv4fHGIj+ipftTb8NbeggtmtYnEOumaszttcfEpImOVkEuT9nF8yais3Cn3\n\tISHFgKPlg5XR9PP1XyAcxHL3BF3gdvqylZbb3IR8DIFeypkJbe6ZeBBEMJmMJ3XCOc5D\n\tgOU4zhAFBqiaqzN5cJWfMIn+QUtKJcsxbypBLMTwdQGVebA8D7bGbidHAHlb2YnBwXUU\n\tvpCi1suSZqav8KxNNv0bs1yfGLcLwEJVv/VR0AFxiHbtj898weiZFuKbEiVQy64pxNoS\n\tl5yQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=GTOSfZBM/RxnMr465co7k3S6+om/YOI50ZwpQI6RQVU=;\n\tb=kGD47zDd8M4IUJhwnBJ6A2Q+a9dH3yxsWU0v1rgFNzsFgihzvv9VE45qBV/mEwa3lL\n\t0lv//8sYmuId522hJ7dIg88RF8hhcQ88aeH+hZk27OaJJDU5xRvytFObVHT9LUXA+qjq\n\t3+/xFDBVs8UogKArVQS1KyBDaawKhXdAftwq4mmRaTvPfFEQFqWPIYWsiprL2bg/DyNn\n\tJQiTVJ8H1DvNK+PQ9af8dLe01djFSXtSEYuuTZjkDwWiAaFqrsIp1iTXARpdmcVBbvGb\n\tEWgsz+VMSVeGi+k4prDLqBSp0PDgrNk5C5E7a5RNhXAfFgDURZc8Pt6CbvqFYZ+7+1cS\n\t0PFA==","X-Gm-Message-State":"AOAM533gY6VvJgYb9Zzmx5fnJMcnZmMTL6aNfUSqZkGjAXpGey+Ywefc\n\tAykcQxfQQRwWYfAYABZahgFsWQ==","X-Google-Smtp-Source":"ABdhPJxzDr/asweJN0bG9OSTtXD3waotKrDWTOuZnnIvWDMstZ8wHS09WrGKBWC25yNCRV5BVqswjQ==","X-Received":"by 2002:a2e:6e0d:: with SMTP id\n\tj13mr3965986ljc.346.1599734922277; \n\tThu, 10 Sep 2020 03:48:42 -0700 (PDT)","Date":"Thu, 10 Sep 2020 12:48:41 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200910104841.GG4095624@oden.dyn.berto.se>","References":"<20200908134142.27470-1-jacopo@jmondi.org>\n\t<20200908134142.27470-6-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200908134142.27470-6-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH v3 05/11] android: camera_device:\n\tGenerate RAW resolutions","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":"hanlinchen@chromium.org, libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12434,"web_url":"https://patchwork.libcamera.org/comment/12434/","msgid":"<CAO5uPHMD73mfGdZPg+87U8H08G-Kb+jT=5_u75pn7Sb__Suo3A@mail.gmail.com>","date":"2020-09-11T02:27:41","subject":"Re: [libcamera-devel] [PATCH v3 05/11] android: camera_device:\n\tGenerate RAW resolutions","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"On Thu, Sep 10, 2020 at 7:48 PM Niklas Söderlund\n<niklas.soderlund@ragnatech.se> wrote:\n>\n> Hi Jacopo,\n>\n> Thanks for your patch.\n>\n> On 2020-09-08 15:41:36 +0200, Jacopo Mondi wrote:\n> > The resolutions supported for the RAW formats cannot be tested from\n> > a list of known sizes like the processed ones. This is mainly due to the\n> > fact RAW streams are produced by capturing frames at the CSI-2 receiver\n> > output and their size corresponds to the sensor's native sizes.\n> >\n> > In order to obtain the RAW frame size generate a temporary\n> > CameraConfiguration for the Role::StillCaptureRAW role and inspect the\n> > map of StreamFormats returned by the pipeline handler.\n> >\n> > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n>\n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n>\n> > ---\n> >  src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n> >  src/android/camera_device.h   |  2 ++\n> >  2 files changed, 22 insertions(+), 3 deletions(-)\n> >\n> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > index 9d460906ab08..5f4b95987615 100644\n> > --- a/src/android/camera_device.cpp\n> > +++ b/src/android/camera_device.cpp\n> > @@ -313,6 +313,17 @@ std::vector<Size> CameraDevice::filterYUVResolutions(CameraConfiguration *camera\n> >       return supportedResolutions;\n> >  }\n> >\n> > +std::vector<Size> CameraDevice::filterRawResolutions(const libcamera::PixelFormat &pixelFormat)\n\nnit: This function should be more getRawResolutions() because it doesn't filter?\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n> > +{\n> > +     std::unique_ptr<CameraConfiguration> cameraConfig =\n> > +             camera_->generateConfiguration({ StillCaptureRaw });\n> > +     StreamConfiguration &cfg = cameraConfig->at(0);\n> > +     const StreamFormats &formats = cfg.formats();\n> > +     std::vector<Size> supportedResolutions = formats.sizes(pixelFormat);\n> > +\n> > +     return supportedResolutions;\n> > +}\n> > +\n> >  /*\n> >   * Initialize the format conversion map to translate from Android format\n> >   * identifier to libcamera pixel formats and fill in the list of supported\n> > @@ -457,9 +468,15 @@ int CameraDevice::initializeStreamConfigurations()\n> >                               << camera3Format.name << \" to \"\n> >                               << mappedFormat.toString();\n> >\n> > -             std::vector<Size> resolutions = filterYUVResolutions(cameraConfig.get(),\n> > -                                                                  mappedFormat,\n> > -                                                                  cameraResolutions);\n> > +             std::vector<Size> resolutions;\n> > +             const PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);\n> > +             if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)\n> > +                     resolutions = filterRawResolutions(mappedFormat);\n> > +             else\n> > +                     resolutions = filterYUVResolutions(cameraConfig.get(),\n> > +                                                        mappedFormat,\n> > +                                                        cameraResolutions);\n> > +\n> >               for (const Size &res : resolutions) {\n> >                       streamConfigurations_.push_back({ res, androidFormat });\n> >\n> > diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> > index 359a163ebab9..dc0ee664d443 100644\n> > --- a/src/android/camera_device.h\n> > +++ b/src/android/camera_device.h\n> > @@ -97,6 +97,8 @@ private:\n> >       filterYUVResolutions(libcamera::CameraConfiguration *cameraConfig,\n> >                            const libcamera::PixelFormat &pixelFormat,\n> >                            const std::vector<libcamera::Size> &resolutions);\n> > +     std::vector<libcamera::Size>\n> > +     filterRawResolutions(const libcamera::PixelFormat &pixelFormat);\n> >\n> >       std::tuple<uint32_t, uint32_t> calculateStaticMetadataSize();\n> >       libcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);\n> > --\n> > 2.28.0\n> >\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel\n>\n> --\n> Regards,\n> Niklas Söderlund\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 D7F52C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Sep 2020 02:27:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7029462D53;\n\tFri, 11 Sep 2020 04:27:53 +0200 (CEST)","from mail-ej1-x644.google.com (mail-ej1-x644.google.com\n\t[IPv6:2a00:1450:4864:20::644])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 579586037B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 04:27:52 +0200 (CEST)","by mail-ej1-x644.google.com with SMTP id q13so11671764ejo.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 19:27:52 -0700 (PDT)"],"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=\"eexf5j2P\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=T6WsHeBOXnX0vyRFB4q5hACcBBbTVZpkoTfesZWzpvI=;\n\tb=eexf5j2P7LklQFn1OGuWxaHAaOuIeUhHSBotK4z7ieYQIss3vedzv8ui4oyAq/Hy3/\n\tMKsJxd+xKdwErPbJ4NLN/lESS/e7hDqrSGiTFU+/V8/OqbN2JkDhmqCisM9FCLPrSyjk\n\tJMeSchKY6MINyUWQiubv8CovwGM3kYo1k06i8=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=T6WsHeBOXnX0vyRFB4q5hACcBBbTVZpkoTfesZWzpvI=;\n\tb=JBhCCcnSFF2kBn7vGdoGJriygoN0HeoA1hRbEOoHwD+GmgkzLLLjjMLDqoRv1eG5lB\n\tcdIYnZOR2G/qfCH22hb5i9fU8Nid3teJu44H5ovqymQnsv8x2qTHHqYWHmkCnBBXYrJS\n\tAfBuZ3jBSroafsXIbV9FF7jq2+0EJaOEfyqOFT+4+0mu227FBBPtiRqQQ7wLAx9/FitF\n\ttpPH06z8tHnBeoOjSnuPgxryQtTwnDkGyp3t0KKZPNlaWG+UoLU81MrY47lX4PKJ7v8f\n\tc3yvt7f+dRNfcn+CLOhwjf9h+ds01zqm51/YxB4bRCvtnWOa/zwIz7A4KJPfIHDGSa3D\n\tiwQA==","X-Gm-Message-State":"AOAM530irpURaP3SUL3j5C11VtSMRSYKDT/rggqzOX/7qGmpAJF/RkHj\n\tugIRZfSU8lZWMzMYWzsuHeKQ9+DGCI29wqFHJc/ISA==","X-Google-Smtp-Source":"ABdhPJyimhlomWSrjsKR/xacgTRX+hikO6HcAojex6F4+NiwK8mltHMMEFF5mVPitG+cmAkcX0pDraBQRKWA74VqCO8=","X-Received":"by 2002:a17:906:5206:: with SMTP id\n\tg6mr12369715ejm.292.1599791271982; \n\tThu, 10 Sep 2020 19:27:51 -0700 (PDT)","MIME-Version":"1.0","References":"<20200908134142.27470-1-jacopo@jmondi.org>\n\t<20200908134142.27470-6-jacopo@jmondi.org>\n\t<20200910104841.GG4095624@oden.dyn.berto.se>","In-Reply-To":"<20200910104841.GG4095624@oden.dyn.berto.se>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Fri, 11 Sep 2020 11:27:41 +0900","Message-ID":"<CAO5uPHMD73mfGdZPg+87U8H08G-Kb+jT=5_u75pn7Sb__Suo3A@mail.gmail.com>","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH v3 05/11] android: camera_device:\n\tGenerate RAW resolutions","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":"Hanlin Chen <hanlinchen@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12458,"web_url":"https://patchwork.libcamera.org/comment/12458/","msgid":"<20200911163317.fekt6y5k2yk2zxpa@uno.localdomain>","date":"2020-09-11T16:33:17","subject":"Re: [libcamera-devel] [PATCH v3 05/11] android: camera_device:\n\tGenerate RAW resolutions","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Hiro,\n\nOn Fri, Sep 11, 2020 at 11:27:41AM +0900, Hirokazu Honda wrote:\n> On Thu, Sep 10, 2020 at 7:48 PM Niklas Söderlund\n> <niklas.soderlund@ragnatech.se> wrote:\n> >\n> > Hi Jacopo,\n> >\n> > Thanks for your patch.\n> >\n> > On 2020-09-08 15:41:36 +0200, Jacopo Mondi wrote:\n> > > The resolutions supported for the RAW formats cannot be tested from\n> > > a list of known sizes like the processed ones. This is mainly due to the\n> > > fact RAW streams are produced by capturing frames at the CSI-2 receiver\n> > > output and their size corresponds to the sensor's native sizes.\n> > >\n> > > In order to obtain the RAW frame size generate a temporary\n> > > CameraConfiguration for the Role::StillCaptureRAW role and inspect the\n> > > map of StreamFormats returned by the pipeline handler.\n> > >\n> > > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> >\n> > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> >\n> > > ---\n> > >  src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n> > >  src/android/camera_device.h   |  2 ++\n> > >  2 files changed, 22 insertions(+), 3 deletions(-)\n> > >\n> > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > > index 9d460906ab08..5f4b95987615 100644\n> > > --- a/src/android/camera_device.cpp\n> > > +++ b/src/android/camera_device.cpp\n> > > @@ -313,6 +313,17 @@ std::vector<Size> CameraDevice::filterYUVResolutions(CameraConfiguration *camera\n> > >       return supportedResolutions;\n> > >  }\n> > >\n> > > +std::vector<Size> CameraDevice::filterRawResolutions(const libcamera::PixelFormat &pixelFormat)\n>\n> nit: This function should be more getRawResolutions() because it doesn't filter?\n\nTrue, but I would like the names of the two functions to be\nsymmetrical. Maybe I can use get for both ?\n\nLet's see how it looks like\n\nThanks\n  j\n\n>\n> Reviewed-by: Hirokazu Honda <hiroh@chromium.org>\n> > > +{\n> > > +     std::unique_ptr<CameraConfiguration> cameraConfig =\n> > > +             camera_->generateConfiguration({ StillCaptureRaw });\n> > > +     StreamConfiguration &cfg = cameraConfig->at(0);\n> > > +     const StreamFormats &formats = cfg.formats();\n> > > +     std::vector<Size> supportedResolutions = formats.sizes(pixelFormat);\n> > > +\n> > > +     return supportedResolutions;\n> > > +}\n> > > +\n> > >  /*\n> > >   * Initialize the format conversion map to translate from Android format\n> > >   * identifier to libcamera pixel formats and fill in the list of supported\n> > > @@ -457,9 +468,15 @@ int CameraDevice::initializeStreamConfigurations()\n> > >                               << camera3Format.name << \" to \"\n> > >                               << mappedFormat.toString();\n> > >\n> > > -             std::vector<Size> resolutions = filterYUVResolutions(cameraConfig.get(),\n> > > -                                                                  mappedFormat,\n> > > -                                                                  cameraResolutions);\n> > > +             std::vector<Size> resolutions;\n> > > +             const PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);\n> > > +             if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW)\n> > > +                     resolutions = filterRawResolutions(mappedFormat);\n> > > +             else\n> > > +                     resolutions = filterYUVResolutions(cameraConfig.get(),\n> > > +                                                        mappedFormat,\n> > > +                                                        cameraResolutions);\n> > > +\n> > >               for (const Size &res : resolutions) {\n> > >                       streamConfigurations_.push_back({ res, androidFormat });\n> > >\n> > > diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> > > index 359a163ebab9..dc0ee664d443 100644\n> > > --- a/src/android/camera_device.h\n> > > +++ b/src/android/camera_device.h\n> > > @@ -97,6 +97,8 @@ private:\n> > >       filterYUVResolutions(libcamera::CameraConfiguration *cameraConfig,\n> > >                            const libcamera::PixelFormat &pixelFormat,\n> > >                            const std::vector<libcamera::Size> &resolutions);\n> > > +     std::vector<libcamera::Size>\n> > > +     filterRawResolutions(const libcamera::PixelFormat &pixelFormat);\n> > >\n> > >       std::tuple<uint32_t, uint32_t> calculateStaticMetadataSize();\n> > >       libcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);\n> > > --\n> > > 2.28.0\n> > >\n> > > _______________________________________________\n> > > libcamera-devel mailing list\n> > > libcamera-devel@lists.libcamera.org\n> > > https://lists.libcamera.org/listinfo/libcamera-devel\n> >\n> > --\n> > Regards,\n> > Niklas Söderlund\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel","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 8E869C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Sep 2020 16:29:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6274462D99;\n\tFri, 11 Sep 2020 18:29:29 +0200 (CEST)","from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 286A260534\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 18:29:28 +0200 (CEST)","from uno.localdomain (93-34-118-233.ip49.fastwebnet.it\n\t[93.34.118.233]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 096FC1BF20B;\n\tFri, 11 Sep 2020 16:29:26 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","Date":"Fri, 11 Sep 2020 18:33:17 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20200911163317.fekt6y5k2yk2zxpa@uno.localdomain>","References":"<20200908134142.27470-1-jacopo@jmondi.org>\n\t<20200908134142.27470-6-jacopo@jmondi.org>\n\t<20200910104841.GG4095624@oden.dyn.berto.se>\n\t<CAO5uPHMD73mfGdZPg+87U8H08G-Kb+jT=5_u75pn7Sb__Suo3A@mail.gmail.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<CAO5uPHMD73mfGdZPg+87U8H08G-Kb+jT=5_u75pn7Sb__Suo3A@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v3 05/11] android: camera_device:\n\tGenerate RAW resolutions","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":"Hanlin Chen <hanlinchen@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]