[{"id":12414,"web_url":"https://patchwork.libcamera.org/comment/12414/","msgid":"<20200910110755.GM4095624@oden.dyn.berto.se>","date":"2020-09-10T11:07:55","subject":"Re: [libcamera-devel] [PATCH v3 11/11] android: camera_device: Make\n\tCameraStream a class","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 work.\n\nOn 2020-09-08 15:41:42 +0200, Jacopo Mondi wrote:\n> Complete the transformation of CameraStream into a class and provide\n> a read-only interface that allows to access its parameters but not\n> modify them at run-time.\n> \n> No functional changes intended but this change aims to make the code\n> more robust by enforcing a stricter interface in the CameraStream class.\n> \n> Reviewed-by: Hirokazu Honda <hiroh@chromium.org>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nI see you fixed the arguments I commented about in 10/11 here so feel \nfree to ignore that comment and keep the R-b for 10/11. For this patch,\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/android/camera_device.cpp |  9 +++++----\n>  src/android/camera_device.h   | 14 ++++++++------\n>  2 files changed, 13 insertions(+), 10 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 4c1416913d00..50923df22a8f 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -168,8 +168,9 @@ MappedCamera3Buffer::MappedCamera3Buffer(const buffer_handle_t camera3buffer,\n>  \t}\n>  }\n>  \n> -CameraStream::CameraStream(PixelFormat f, Size s, unsigned int i, Encoder *encoder)\n> -\t: format(f), size(s), index_(i), encoder_(encoder)\n> +CameraStream::CameraStream(PixelFormat format, Size size,\n> +\t\t\t   unsigned int index, Encoder *encoder)\n> +\t: format_(format), size_(size), index_(index), encoder_(encoder)\n>  {\n>  }\n>  \n> @@ -1402,7 +1403,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n>  \t\tdescriptor->buffers[i].buffer = camera3Buffers[i].buffer;\n>  \n>  \t\t/* Software streams are handled after hardware streams complete. */\n> -\t\tif (cameraStream->format == formats::MJPEG)\n> +\t\tif (cameraStream->format() == formats::MJPEG)\n>  \t\t\tcontinue;\n>  \n>  \t\t/*\n> @@ -1466,7 +1467,7 @@ void CameraDevice::requestComplete(Request *request)\n>  \t\tCameraStream *cameraStream =\n>  \t\t\tstatic_cast<CameraStream *>(descriptor->buffers[i].stream->priv);\n>  \n> -\t\tif (cameraStream->format != formats::MJPEG)\n> +\t\tif (cameraStream->format() != formats::MJPEG)\n>  \t\t\tcontinue;\n>  \n>  \t\tEncoder *encoder = cameraStream->encoder();\n> diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> index 5ac8f05e5a07..912c59aeb5a8 100644\n> --- a/src/android/camera_device.h\n> +++ b/src/android/camera_device.h\n> @@ -27,18 +27,20 @@\n>  \n>  class CameraMetadata;\n>  \n> -struct CameraStream {\n> +class CameraStream\n> +{\n>  public:\n> -\tCameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i,\n> -\t\t     Encoder *encoder = nullptr);\n> +\tCameraStream(libcamera::PixelFormat format, libcamera::Size size,\n> +\t\t     unsigned int index, Encoder *encoder = nullptr);\n>  \n> +\tconst libcamera::PixelFormat &format() const { return format_; }\n> +\tconst libcamera::Size &size() const { return size_; }\n>  \tunsigned int index() const { return index_; }\n>  \tEncoder *encoder() const { return encoder_.get(); }\n>  \n> -\tlibcamera::PixelFormat format;\n> -\tlibcamera::Size size;\n> -\n>  private:\n> +\tlibcamera::PixelFormat format_;\n> +\tlibcamera::Size size_;\n>  \t/*\n>  \t * The index of the libcamera StreamConfiguration as added during\n>  \t * configureStreams(). A single libcamera Stream may be used to deliver\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 DC911C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 10 Sep 2020 11:07:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7A09A62D77;\n\tThu, 10 Sep 2020 13:07:57 +0200 (CEST)","from mail-lf1-x141.google.com (mail-lf1-x141.google.com\n\t[IPv6:2a00:1450:4864:20::141])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7619062CE1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 13:07:56 +0200 (CEST)","by mail-lf1-x141.google.com with SMTP id w11so3366861lfn.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 04:07:56 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tx5sm1486028ljh.127.2020.09.10.04.07.55\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 10 Sep 2020 04:07:55 -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=\"MvdprbyQ\"; 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=HzzuTudiaiB6oYB0kZLKNzT1C60k5tg6JsOu3xwyLHk=;\n\tb=MvdprbyQ613rouxov6PMjBf4rBy2PeSEjYRZ32uePwbOQrkDD4FzZNlaihNUXI1YQj\n\tKC1YXhYlczmGl5kzR7cudAwHtvKUiKSzPSxHOQrNxIhm5iyZuQch5GPGCb4+9BSW6PI5\n\tf/46I1JmeP6hyWSvEVp1zDmeQywfSQa3pO+75kfIKpY1nicJp/Qgp1BTf1Jlo8Wug2MC\n\tjkEJ0Yt9Qw4LJek+vhQf5W43e7VywuKZCi05w4Wo/NpdAk5kEoofHLTWHOnS4PZIYnyO\n\tFJjk7ifcznhJzNuBeHUX5vs2TJhSh85BtTMzafgF2ppAiAUmBwyJAiSM6atJzG7TAx+e\n\tekcg==","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=HzzuTudiaiB6oYB0kZLKNzT1C60k5tg6JsOu3xwyLHk=;\n\tb=bk/bmVEbiRIoJ12Ca+fCIBGwUQXOjUNz0LisJ6GQTRgRezOJE+4lhbhFHX8guEesk5\n\t+sht0XxxFCD0yqeQWstUMxnBJ67u8MU4RCNSrpghgxIfjwYniEWtGJwiekxYfoIkPZ1V\n\tuipestt5S+ZVV9PmldrfONAkh4nDYyafepajCTmWqnvcg66rsoAspg0vcv1sv/lzehAi\n\tzJaeOpDEKb3s7lEMcYWtaf0kgxiZKb5ic30PqVk0DC5zN8JLkhLFKXlLRbpJFf2d1lZj\n\t3PIsQ0wFKeJuPU+aAUSF07QeNKGfXsxWMSR8qyIjzNO+4kMGACGM2Lela64GtjjqHWk/\n\tZKuQ==","X-Gm-Message-State":"AOAM5311TH11J6hEzef8ZzoiDamvgpnaJxJt7lbi8mguOJcHCsPu68YY\n\tp4/T3xlqBrnyGoZ48rgeruOdGg==","X-Google-Smtp-Source":"ABdhPJxdgTIv6Omd63wsY9SNdZOAO/+0rtDxGAvYYyAFe7/NPOQiwwY5Uu1vJNHdmAu23uxSBA3qyg==","X-Received":"by 2002:ac2:5541:: with SMTP id l1mr4049422lfk.89.1599736075888; \n\tThu, 10 Sep 2020 04:07:55 -0700 (PDT)","Date":"Thu, 10 Sep 2020 13:07:55 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200910110755.GM4095624@oden.dyn.berto.se>","References":"<20200908134142.27470-1-jacopo@jmondi.org>\n\t<20200908134142.27470-12-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200908134142.27470-12-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH v3 11/11] android: camera_device: Make\n\tCameraStream a class","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":12441,"web_url":"https://patchwork.libcamera.org/comment/12441/","msgid":"<CAO5uPHOLfVgDupC6Tk7irmzSJzPgdcn_6i__SA5RFCxLVwrHVA@mail.gmail.com>","date":"2020-09-11T02:43:39","subject":"Re: [libcamera-devel] [PATCH v3 11/11] android: camera_device: Make\n\tCameraStream a class","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Jaocopo, thanks for your work in the patch series!\n\nOn Thu, Sep 10, 2020 at 8:07 PM Niklas Söderlund\n<niklas.soderlund@ragnatech.se> wrote:\n>\n> Hi Jacopo,\n>\n> Thanks for your work.\n>\n> On 2020-09-08 15:41:42 +0200, Jacopo Mondi wrote:\n> > Complete the transformation of CameraStream into a class and provide\n> > a read-only interface that allows to access its parameters but not\n> > modify them at run-time.\n> >\n> > No functional changes intended but this change aims to make the code\n> > more robust by enforcing a stricter interface in the CameraStream class.\n> >\n> > Reviewed-by: Hirokazu Honda <hiroh@chromium.org>\n> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n>\n> I see you fixed the arguments I commented about in 10/11 here so feel\n> free to ignore that comment and keep the R-b for 10/11. For this patch,\n>\n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n>\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n\n> > ---\n> >  src/android/camera_device.cpp |  9 +++++----\n> >  src/android/camera_device.h   | 14 ++++++++------\n> >  2 files changed, 13 insertions(+), 10 deletions(-)\n> >\n> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > index 4c1416913d00..50923df22a8f 100644\n> > --- a/src/android/camera_device.cpp\n> > +++ b/src/android/camera_device.cpp\n> > @@ -168,8 +168,9 @@ MappedCamera3Buffer::MappedCamera3Buffer(const buffer_handle_t camera3buffer,\n> >       }\n> >  }\n> >\n> > -CameraStream::CameraStream(PixelFormat f, Size s, unsigned int i, Encoder *encoder)\n> > -     : format(f), size(s), index_(i), encoder_(encoder)\n> > +CameraStream::CameraStream(PixelFormat format, Size size,\n> > +                        unsigned int index, Encoder *encoder)\n> > +     : format_(format), size_(size), index_(index), encoder_(encoder)\n> >  {\n> >  }\n> >\n> > @@ -1402,7 +1403,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> >               descriptor->buffers[i].buffer = camera3Buffers[i].buffer;\n> >\n> >               /* Software streams are handled after hardware streams complete. */\n> > -             if (cameraStream->format == formats::MJPEG)\n> > +             if (cameraStream->format() == formats::MJPEG)\n> >                       continue;\n> >\n> >               /*\n> > @@ -1466,7 +1467,7 @@ void CameraDevice::requestComplete(Request *request)\n> >               CameraStream *cameraStream =\n> >                       static_cast<CameraStream *>(descriptor->buffers[i].stream->priv);\n> >\n> > -             if (cameraStream->format != formats::MJPEG)\n> > +             if (cameraStream->format() != formats::MJPEG)\n> >                       continue;\n> >\n> >               Encoder *encoder = cameraStream->encoder();\n> > diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> > index 5ac8f05e5a07..912c59aeb5a8 100644\n> > --- a/src/android/camera_device.h\n> > +++ b/src/android/camera_device.h\n> > @@ -27,18 +27,20 @@\n> >\n> >  class CameraMetadata;\n> >\n> > -struct CameraStream {\n> > +class CameraStream\n> > +{\n> >  public:\n> > -     CameraStream(libcamera::PixelFormat, libcamera::Size, unsigned int i,\n> > -                  Encoder *encoder = nullptr);\n> > +     CameraStream(libcamera::PixelFormat format, libcamera::Size size,\n> > +                  unsigned int index, Encoder *encoder = nullptr);\n> >\n> > +     const libcamera::PixelFormat &format() const { return format_; }\n> > +     const libcamera::Size &size() const { return size_; }\n> >       unsigned int index() const { return index_; }\n> >       Encoder *encoder() const { return encoder_.get(); }\n> >\n> > -     libcamera::PixelFormat format;\n> > -     libcamera::Size size;\n> > -\n> >  private:\n> > +     libcamera::PixelFormat format_;\n> > +     libcamera::Size size_;\n> >       /*\n> >        * The index of the libcamera StreamConfiguration as added during\n> >        * configureStreams(). A single libcamera Stream may be used to deliver\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 CF215BDB1D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Sep 2020 02:43:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9C26162D60;\n\tFri, 11 Sep 2020 04:43:51 +0200 (CEST)","from mail-ed1-x541.google.com (mail-ed1-x541.google.com\n\t[IPv6:2a00:1450:4864:20::541])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8B88C62D27\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 04:43:50 +0200 (CEST)","by mail-ed1-x541.google.com with SMTP id ay8so8409289edb.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 19:43:50 -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=\"WF1NIevT\"; 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=+bzuub6QDoU8gMF4piJvmvtXWRkXPrEkgwmXq6hrZ+I=;\n\tb=WF1NIevTfUtDG32luZ3PxGz9n7XbyzesXp3f1MSySqFq6woWNiLmKAKdVZVqfWBtFH\n\t4iN1fpIyYDNwlZL7wKgH6NNetpPyeB7/haELsg3q33w6lsqb+cgvj0sub0dJaYG1V0Uj\n\tKKqI3POoyX+YrPDi6oBMp8N5HHBX1uV/wMQWE=","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=+bzuub6QDoU8gMF4piJvmvtXWRkXPrEkgwmXq6hrZ+I=;\n\tb=W5LJzpOSV0SJ0z/8qoM299sc/lQ12LakADJ1R9C7h74fzmzUm3yixg5s0Fspmardnx\n\tkNNFQV1hjSFx05AinoPQBchrAHDjAdl+9CAlYta9UynhHB9zoqjXUgAso4hBSQUEdF9q\n\tE1rkwv6x+Gm2IBEMRWvBivqSSi74JKZw85+TQiExKn0sXNciju0crMY89JY1OAwVfwba\n\tnLWFuiPLOS2qpGk72OWkPq6hCXoDzKqRKtJ2eHthSevK5cXa4hZ/MfvbjhfAP6c8rax2\n\tf2PNcWamFgvNFprYuzdktLvk7eK8j5SrJZjJpHwNy8HDhCH+mzOp75AzorVrij+DEuYU\n\thT9w==","X-Gm-Message-State":"AOAM530ZGfunsquf9hTy2fiAn41++m8cUxjEGcXbdmVbhsqFPV3RV1cB\n\tLq2+u0UYrfUjVCL4cHolXHWyDbYtYHkW7WVtunjDmA==","X-Google-Smtp-Source":"ABdhPJzAdNbWG1y5jYY6PnBO6qr8wuzSbUOu9X3bqjlrfTPwGYMEBvKldE1jK4isomFeimsQlwOWixH1GaazLz0Cq5w=","X-Received":"by 2002:a05:6402:3192:: with SMTP id\n\tdi18mr12647880edb.116.1599792230231; \n\tThu, 10 Sep 2020 19:43:50 -0700 (PDT)","MIME-Version":"1.0","References":"<20200908134142.27470-1-jacopo@jmondi.org>\n\t<20200908134142.27470-12-jacopo@jmondi.org>\n\t<20200910110755.GM4095624@oden.dyn.berto.se>","In-Reply-To":"<20200910110755.GM4095624@oden.dyn.berto.se>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Fri, 11 Sep 2020 11:43:39 +0900","Message-ID":"<CAO5uPHOLfVgDupC6Tk7irmzSJzPgdcn_6i__SA5RFCxLVwrHVA@mail.gmail.com>","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH v3 11/11] android: camera_device: Make\n\tCameraStream a class","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>"}}]