[{"id":19039,"web_url":"https://patchwork.libcamera.org/comment/19039/","msgid":"<20210825084759.3l5ztcdwzy2etfic@uno.localdomain>","date":"2021-08-25T08:47:59","subject":"Re: [libcamera-devel] [PATCH v2 3/3] android: camera_buffer: Add\n\tstride/offset/size function","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Hiro,\n\nOn Wed, Aug 25, 2021 at 01:44:10PM +0900, Hirokazu Honda wrote:\n> This adds getter functions of stride, offset and size to CameraBuffer\n> interface.\n\nWhere these will be used ? Sorry if I'm missing the obvious\n\n>\n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> ---\n>  src/android/camera_buffer.h              | 16 +++++++++++++\n>  src/android/mm/cros_camera_buffer.cpp    | 19 +++++++++++++++\n>  src/android/mm/generic_camera_buffer.cpp | 30 ++++++++++++++++++++++++\n>  3 files changed, 65 insertions(+)\n>\n> diff --git a/src/android/camera_buffer.h b/src/android/camera_buffer.h\n> index 87df2570..226a8f5c 100644\n> --- a/src/android/camera_buffer.h\n> +++ b/src/android/camera_buffer.h\n> @@ -31,6 +31,10 @@ public:\n>  \tlibcamera::Span<const uint8_t> plane(unsigned int plane) const;\n>  \tlibcamera::Span<uint8_t> plane(unsigned int plane);\n>\n> +\tunsigned int stride(unsigned int plane) const;\n> +\tunsigned int offset(unsigned int plane) const;\n> +\tunsigned int size(unsigned int plane) const;\n> +\n>  \tsize_t jpegBufferSize(size_t maxJpegBufferSize) const;\n>  };\n>\n> @@ -62,6 +66,18 @@ Span<uint8_t> CameraBuffer::plane(unsigned int plane)\t\t\t\\\n>  {\t\t\t\t\t\t\t\t\t\\\n>  \treturn _d()->plane(plane);\t\t\t\t\t\\\n>  }\t\t\t\t\t\t\t\t\t\\\n> +unsigned int CameraBuffer::stride(unsigned int plane) const\t\t\\\n> +{\t\t\t\t\t\t\t\t\t\\\n> +\treturn _d()->stride(plane);\t\t\t\t\t\\\n> +}\t\t\t\t\t\t\t\t\t\\\n> +unsigned int CameraBuffer::offset(unsigned int plane) const\t\t\\\n> +{\t\t\t\t\t\t\t\t\t\\\n> +\treturn _d()->offset(plane);\t\t\t\t\t\\\n> +}\t\t\t\t\t\t\t\t\t\\\n> +unsigned int CameraBuffer::size(unsigned int plane) const\t\t\\\n> +{\t\t\t\t\t\t\t\t\t\\\n> +\treturn _d()->size(plane);\t\t\t\t\t\\\n> +}\t\t\t\t\t\t\t\t\t\\\n>  size_t CameraBuffer::jpegBufferSize(size_t maxJpegBufferSize) const\t\\\n>  {\t\t\t\t\t\t\t\t\t\\\n>  \treturn _d()->jpegBufferSize(maxJpegBufferSize);\t\t\t\\\n> diff --git a/src/android/mm/cros_camera_buffer.cpp b/src/android/mm/cros_camera_buffer.cpp\n> index 42546d87..bdbac16f 100644\n> --- a/src/android/mm/cros_camera_buffer.cpp\n> +++ b/src/android/mm/cros_camera_buffer.cpp\n> @@ -31,6 +31,10 @@ public:\n>\n>  \tSpan<uint8_t> plane(unsigned int plane);\n>\n> +\tunsigned int stride(unsigned int plane) const;\n> +\tunsigned int offset(unsigned int plane) const;\n> +\tunsigned int size(unsigned int plane) const;\n> +\n>  \tsize_t jpegBufferSize(size_t maxJpegBufferSize) const;\n>\n>  private:\n> @@ -112,6 +116,21 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)\n>  \t\t bufferManager_->GetPlaneSize(handle_, plane) };\n>  }\n>\n> +unsigned int CameraBuffer::Private::stride(unsigned int plane) const\n> +{\n> +\treturn cros::CameraBufferManager::GetPlaneStride(handle_, plane);\n> +}\n> +\n> +unsigned int CameraBuffer::Private::offset(unsigned int plane) const\n> +{\n> +\treturn cros::CameraBufferManager::GetPlaneOffset(handle_, plane);\n> +}\n> +\n> +unsigned int CameraBuffer::Private::size(unsigned int plane) const\n> +{\n> +\treturn cros::CameraBufferManager::GetPlaneSize(handle_, plane);\n> +}\n> +\n>  size_t CameraBuffer::Private::jpegBufferSize([[maybe_unused]] size_t maxJpegBufferSize) const\n>  {\n>  \treturn bufferManager_->GetPlaneSize(handle_, 0);\n> diff --git a/src/android/mm/generic_camera_buffer.cpp b/src/android/mm/generic_camera_buffer.cpp\n> index 37868d26..d4f3f22b 100644\n> --- a/src/android/mm/generic_camera_buffer.cpp\n> +++ b/src/android/mm/generic_camera_buffer.cpp\n> @@ -34,10 +34,15 @@ public:\n>\n>  \tSpan<uint8_t> plane(unsigned int plane);\n>\n> +\tunsigned int stride(unsigned int plane) const;\n> +\tunsigned int offset(unsigned int plane) const;\n> +\tunsigned int size(unsigned int plane) const;\n> +\n>  \tsize_t jpegBufferSize(size_t maxJpegBufferSize) const;\n>\n>  private:\n>  \tstruct PlaneInfo {\n> +\t\tunsigned int stride;\n>  \t\tunsigned int offset;\n>  \t\tunsigned int size;\n>  \t};\n> @@ -110,6 +115,7 @@ CameraBuffer::Private::Private([[maybe_unused]] CameraBuffer *cameraBuffer,\n>  \t\tconst unsigned int planeSize =\n>  \t\t\tstride * ((size.height + vertSubSample - 1) / vertSubSample);\n>\n> +\t\tplaneInfo_[i].stride = stride;\n>  \t\tplaneInfo_[i].offset = offset;\n>  \t\tplaneInfo_[i].size = planeSize;\n>\n> @@ -145,6 +151,30 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)\n>  \treturn planes_[plane];\n>  }\n>\n> +unsigned int CameraBuffer::Private::stride(unsigned int plane) const\n> +{\n> +\tif (plane >= planeInfo_.size())\n> +\t\treturn 0;\n> +\n> +\treturn planeInfo_[plane].stride;\n> +}\n> +\n> +unsigned int CameraBuffer::Private::offset(unsigned int plane) const\n> +{\n> +\tif (plane >= planeInfo_.size())\n> +\t\treturn 0;\n> +\n> +\treturn planeInfo_[plane].offset;\n> +}\n> +\n> +unsigned int CameraBuffer::Private::size(unsigned int plane) const\n> +{\n> +\tif (plane >= planeInfo_.size())\n> +\t\treturn 0;\n> +\n> +\treturn planeInfo_[plane].size;\n> +}\n> +\n>  size_t CameraBuffer::Private::jpegBufferSize(size_t maxJpegBufferSize) const\n>  {\n>  \tif (maps_.empty()) {\n> --\n> 2.33.0.rc2.250.ged5fa647cd-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 5562EBD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Aug 2021 08:47:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1C3DA688A6;\n\tWed, 25 Aug 2021 10:47:12 +0200 (CEST)","from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[217.70.183.199])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9967760259\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Aug 2021 10:47:11 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay9-d.mail.gandi.net (Postfix) with ESMTPSA id BF7B2FF815;\n\tWed, 25 Aug 2021 08:47:10 +0000 (UTC)"],"Date":"Wed, 25 Aug 2021 10:47:59 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20210825084759.3l5ztcdwzy2etfic@uno.localdomain>","References":"<20210825044410.2787433-1-hiroh@chromium.org>\n\t<20210825044410.2787433-4-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210825044410.2787433-4-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH v2 3/3] android: camera_buffer: Add\n\tstride/offset/size function","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>"}},{"id":19053,"web_url":"https://patchwork.libcamera.org/comment/19053/","msgid":"<CAO5uPHPjr7u4WqfggXcv5H=wcF4Y7q4FGMObA-zxWZrew41ipA@mail.gmail.com>","date":"2021-08-25T10:59:25","subject":"Re: [libcamera-devel] [PATCH v2 3/3] android: camera_buffer: Add\n\tstride/offset/size function","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Jacopo, thank you for reviewing.\n\nOn Wed, Aug 25, 2021 at 5:47 PM Jacopo Mondi <jacopo@jmondi.org> wrote:\n>\n> Hi Hiro,\n>\n> On Wed, Aug 25, 2021 at 01:44:10PM +0900, Hirokazu Honda wrote:\n> > This adds getter functions of stride, offset and size to CameraBuffer\n> > interface.\n>\n> Where these will be used ? Sorry if I'm missing the obvious\n\nThis will be used in this patch. https://patchwork.libcamera.org/patch/13452/\n\n-Hiro\n>\n> >\n> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > ---\n> >  src/android/camera_buffer.h              | 16 +++++++++++++\n> >  src/android/mm/cros_camera_buffer.cpp    | 19 +++++++++++++++\n> >  src/android/mm/generic_camera_buffer.cpp | 30 ++++++++++++++++++++++++\n> >  3 files changed, 65 insertions(+)\n> >\n> > diff --git a/src/android/camera_buffer.h b/src/android/camera_buffer.h\n> > index 87df2570..226a8f5c 100644\n> > --- a/src/android/camera_buffer.h\n> > +++ b/src/android/camera_buffer.h\n> > @@ -31,6 +31,10 @@ public:\n> >       libcamera::Span<const uint8_t> plane(unsigned int plane) const;\n> >       libcamera::Span<uint8_t> plane(unsigned int plane);\n> >\n> > +     unsigned int stride(unsigned int plane) const;\n> > +     unsigned int offset(unsigned int plane) const;\n> > +     unsigned int size(unsigned int plane) const;\n> > +\n> >       size_t jpegBufferSize(size_t maxJpegBufferSize) const;\n> >  };\n> >\n> > @@ -62,6 +66,18 @@ Span<uint8_t> CameraBuffer::plane(unsigned int plane)                      \\\n> >  {                                                                    \\\n> >       return _d()->plane(plane);                                      \\\n> >  }                                                                    \\\n> > +unsigned int CameraBuffer::stride(unsigned int plane) const          \\\n> > +{                                                                    \\\n> > +     return _d()->stride(plane);                                     \\\n> > +}                                                                    \\\n> > +unsigned int CameraBuffer::offset(unsigned int plane) const          \\\n> > +{                                                                    \\\n> > +     return _d()->offset(plane);                                     \\\n> > +}                                                                    \\\n> > +unsigned int CameraBuffer::size(unsigned int plane) const            \\\n> > +{                                                                    \\\n> > +     return _d()->size(plane);                                       \\\n> > +}                                                                    \\\n> >  size_t CameraBuffer::jpegBufferSize(size_t maxJpegBufferSize) const  \\\n> >  {                                                                    \\\n> >       return _d()->jpegBufferSize(maxJpegBufferSize);                 \\\n> > diff --git a/src/android/mm/cros_camera_buffer.cpp b/src/android/mm/cros_camera_buffer.cpp\n> > index 42546d87..bdbac16f 100644\n> > --- a/src/android/mm/cros_camera_buffer.cpp\n> > +++ b/src/android/mm/cros_camera_buffer.cpp\n> > @@ -31,6 +31,10 @@ public:\n> >\n> >       Span<uint8_t> plane(unsigned int plane);\n> >\n> > +     unsigned int stride(unsigned int plane) const;\n> > +     unsigned int offset(unsigned int plane) const;\n> > +     unsigned int size(unsigned int plane) const;\n> > +\n> >       size_t jpegBufferSize(size_t maxJpegBufferSize) const;\n> >\n> >  private:\n> > @@ -112,6 +116,21 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)\n> >                bufferManager_->GetPlaneSize(handle_, plane) };\n> >  }\n> >\n> > +unsigned int CameraBuffer::Private::stride(unsigned int plane) const\n> > +{\n> > +     return cros::CameraBufferManager::GetPlaneStride(handle_, plane);\n> > +}\n> > +\n> > +unsigned int CameraBuffer::Private::offset(unsigned int plane) const\n> > +{\n> > +     return cros::CameraBufferManager::GetPlaneOffset(handle_, plane);\n> > +}\n> > +\n> > +unsigned int CameraBuffer::Private::size(unsigned int plane) const\n> > +{\n> > +     return cros::CameraBufferManager::GetPlaneSize(handle_, plane);\n> > +}\n> > +\n> >  size_t CameraBuffer::Private::jpegBufferSize([[maybe_unused]] size_t maxJpegBufferSize) const\n> >  {\n> >       return bufferManager_->GetPlaneSize(handle_, 0);\n> > diff --git a/src/android/mm/generic_camera_buffer.cpp b/src/android/mm/generic_camera_buffer.cpp\n> > index 37868d26..d4f3f22b 100644\n> > --- a/src/android/mm/generic_camera_buffer.cpp\n> > +++ b/src/android/mm/generic_camera_buffer.cpp\n> > @@ -34,10 +34,15 @@ public:\n> >\n> >       Span<uint8_t> plane(unsigned int plane);\n> >\n> > +     unsigned int stride(unsigned int plane) const;\n> > +     unsigned int offset(unsigned int plane) const;\n> > +     unsigned int size(unsigned int plane) const;\n> > +\n> >       size_t jpegBufferSize(size_t maxJpegBufferSize) const;\n> >\n> >  private:\n> >       struct PlaneInfo {\n> > +             unsigned int stride;\n> >               unsigned int offset;\n> >               unsigned int size;\n> >       };\n> > @@ -110,6 +115,7 @@ CameraBuffer::Private::Private([[maybe_unused]] CameraBuffer *cameraBuffer,\n> >               const unsigned int planeSize =\n> >                       stride * ((size.height + vertSubSample - 1) / vertSubSample);\n> >\n> > +             planeInfo_[i].stride = stride;\n> >               planeInfo_[i].offset = offset;\n> >               planeInfo_[i].size = planeSize;\n> >\n> > @@ -145,6 +151,30 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)\n> >       return planes_[plane];\n> >  }\n> >\n> > +unsigned int CameraBuffer::Private::stride(unsigned int plane) const\n> > +{\n> > +     if (plane >= planeInfo_.size())\n> > +             return 0;\n> > +\n> > +     return planeInfo_[plane].stride;\n> > +}\n> > +\n> > +unsigned int CameraBuffer::Private::offset(unsigned int plane) const\n> > +{\n> > +     if (plane >= planeInfo_.size())\n> > +             return 0;\n> > +\n> > +     return planeInfo_[plane].offset;\n> > +}\n> > +\n> > +unsigned int CameraBuffer::Private::size(unsigned int plane) const\n> > +{\n> > +     if (plane >= planeInfo_.size())\n> > +             return 0;\n> > +\n> > +     return planeInfo_[plane].size;\n> > +}\n> > +\n> >  size_t CameraBuffer::Private::jpegBufferSize(size_t maxJpegBufferSize) const\n> >  {\n> >       if (maps_.empty()) {\n> > --\n> > 2.33.0.rc2.250.ged5fa647cd-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 38D68BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Aug 2021 10:59:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A15B268893;\n\tWed, 25 Aug 2021 12:59:38 +0200 (CEST)","from mail-ej1-x633.google.com (mail-ej1-x633.google.com\n\t[IPv6:2a00:1450:4864:20::633])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B4C8160259\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Aug 2021 12:59:36 +0200 (CEST)","by mail-ej1-x633.google.com with SMTP id h9so50684881ejs.4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Aug 2021 03:59: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=\"I6jpl5xv\"; 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; bh=HYBLvYxKU6JFUP0Y6EnQrsKxJRi1APf1GuOfg0GmwJU=;\n\tb=I6jpl5xvM3QW0ljhm0g9071msfiFe++TC+mkjJxJgbZ0ZbqmoGnQNvOSbnmztRwGA4\n\t2UeVSUxMa7v8XZzZHD/ycJVVC9Efu8TiY/k0gcpcqPkYDUAMhT8LalJMswS/9nLUEQoq\n\tWFSjOZw//54ieAF5jPXeiLc3dhK3d0crTAoAU=","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;\n\tbh=HYBLvYxKU6JFUP0Y6EnQrsKxJRi1APf1GuOfg0GmwJU=;\n\tb=LiumY5+It+il2gJbND3JHAKJSU8w6j4p6WooX2KJgRQbFTPd7jo5+paMgGEJ7B1t2C\n\t06pHvLf9WIuZWIQcQkt4L4KGe0lUt5gOuf3FopA4lPJNb8anJvEI/rYMHWJnx+90ggX1\n\t0DTghnuOsULw9IoXdTCUilZ6iK1JfFtqe0MYTHUx4dEEL828ISbMbbJcPqzv2ih8xFmk\n\t7Zo86R9GXr7ttFtg8ZCYJFCnNuHU9cAjF5oQSem/3qdu5Fem/M5ClvjwW+JfF5OIstFT\n\tFv6Q/pNh7oS5dUoG/YXgLFK9pIxPphx3C5MhxsVvoPwHDepELdLxH0YrI+q4/UJtvfpT\n\tCX2g==","X-Gm-Message-State":"AOAM5339n5mgbfsXCuPN9ETapBbtXQyDKZq+8xdffeuDjuSsI9gPSqct\n\tD2jtVRTlq3oF3E87XLh9I46egQXpTTF8Pre7AM1YYA==","X-Google-Smtp-Source":"ABdhPJzth3gs+3FsrQ364PYNOy22cUHaffyPGobmguE03E/ly0N2dJrMiBuuWyZoYLGQClqqnB4lcoNuWTwAz7QhT/8=","X-Received":"by 2002:a17:907:2168:: with SMTP id\n\trl8mr24090260ejb.42.1629889176415; \n\tWed, 25 Aug 2021 03:59:36 -0700 (PDT)","MIME-Version":"1.0","References":"<20210825044410.2787433-1-hiroh@chromium.org>\n\t<20210825044410.2787433-4-hiroh@chromium.org>\n\t<20210825084759.3l5ztcdwzy2etfic@uno.localdomain>","In-Reply-To":"<20210825084759.3l5ztcdwzy2etfic@uno.localdomain>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Wed, 25 Aug 2021 19:59:25 +0900","Message-ID":"<CAO5uPHPjr7u4WqfggXcv5H=wcF4Y7q4FGMObA-zxWZrew41ipA@mail.gmail.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v2 3/3] android: camera_buffer: Add\n\tstride/offset/size function","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 <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":19074,"web_url":"https://patchwork.libcamera.org/comment/19074/","msgid":"<YSapfuHoQKnpFbY7@pendragon.ideasonboard.com>","date":"2021-08-25T20:35:10","subject":"Re: [libcamera-devel] [PATCH v2 3/3] android: camera_buffer: Add\n\tstride/offset/size function","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nThank you for the patch.\n\nOn Wed, Aug 25, 2021 at 01:44:10PM +0900, Hirokazu Honda wrote:\n> This adds getter functions of stride, offset and size to CameraBuffer\n> interface.\n> \n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/android/camera_buffer.h              | 16 +++++++++++++\n>  src/android/mm/cros_camera_buffer.cpp    | 19 +++++++++++++++\n>  src/android/mm/generic_camera_buffer.cpp | 30 ++++++++++++++++++++++++\n>  3 files changed, 65 insertions(+)\n> \n> diff --git a/src/android/camera_buffer.h b/src/android/camera_buffer.h\n> index 87df2570..226a8f5c 100644\n> --- a/src/android/camera_buffer.h\n> +++ b/src/android/camera_buffer.h\n> @@ -31,6 +31,10 @@ public:\n>  \tlibcamera::Span<const uint8_t> plane(unsigned int plane) const;\n>  \tlibcamera::Span<uint8_t> plane(unsigned int plane);\n>  \n> +\tunsigned int stride(unsigned int plane) const;\n> +\tunsigned int offset(unsigned int plane) const;\n> +\tunsigned int size(unsigned int plane) const;\n> +\n>  \tsize_t jpegBufferSize(size_t maxJpegBufferSize) const;\n>  };\n>  \n> @@ -62,6 +66,18 @@ Span<uint8_t> CameraBuffer::plane(unsigned int plane)\t\t\t\\\n>  {\t\t\t\t\t\t\t\t\t\\\n>  \treturn _d()->plane(plane);\t\t\t\t\t\\\n>  }\t\t\t\t\t\t\t\t\t\\\n> +unsigned int CameraBuffer::stride(unsigned int plane) const\t\t\\\n> +{\t\t\t\t\t\t\t\t\t\\\n> +\treturn _d()->stride(plane);\t\t\t\t\t\\\n> +}\t\t\t\t\t\t\t\t\t\\\n> +unsigned int CameraBuffer::offset(unsigned int plane) const\t\t\\\n> +{\t\t\t\t\t\t\t\t\t\\\n> +\treturn _d()->offset(plane);\t\t\t\t\t\\\n> +}\t\t\t\t\t\t\t\t\t\\\n> +unsigned int CameraBuffer::size(unsigned int plane) const\t\t\\\n> +{\t\t\t\t\t\t\t\t\t\\\n> +\treturn _d()->size(plane);\t\t\t\t\t\\\n> +}\t\t\t\t\t\t\t\t\t\\\n>  size_t CameraBuffer::jpegBufferSize(size_t maxJpegBufferSize) const\t\\\n>  {\t\t\t\t\t\t\t\t\t\\\n>  \treturn _d()->jpegBufferSize(maxJpegBufferSize);\t\t\t\\\n> diff --git a/src/android/mm/cros_camera_buffer.cpp b/src/android/mm/cros_camera_buffer.cpp\n> index 42546d87..bdbac16f 100644\n> --- a/src/android/mm/cros_camera_buffer.cpp\n> +++ b/src/android/mm/cros_camera_buffer.cpp\n> @@ -31,6 +31,10 @@ public:\n>  \n>  \tSpan<uint8_t> plane(unsigned int plane);\n>  \n> +\tunsigned int stride(unsigned int plane) const;\n> +\tunsigned int offset(unsigned int plane) const;\n> +\tunsigned int size(unsigned int plane) const;\n> +\n>  \tsize_t jpegBufferSize(size_t maxJpegBufferSize) const;\n>  \n>  private:\n> @@ -112,6 +116,21 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)\n>  \t\t bufferManager_->GetPlaneSize(handle_, plane) };\n>  }\n>  \n> +unsigned int CameraBuffer::Private::stride(unsigned int plane) const\n> +{\n> +\treturn cros::CameraBufferManager::GetPlaneStride(handle_, plane);\n> +}\n> +\n> +unsigned int CameraBuffer::Private::offset(unsigned int plane) const\n> +{\n> +\treturn cros::CameraBufferManager::GetPlaneOffset(handle_, plane);\n> +}\n> +\n> +unsigned int CameraBuffer::Private::size(unsigned int plane) const\n> +{\n> +\treturn cros::CameraBufferManager::GetPlaneSize(handle_, plane);\n> +}\n> +\n>  size_t CameraBuffer::Private::jpegBufferSize([[maybe_unused]] size_t maxJpegBufferSize) const\n>  {\n>  \treturn bufferManager_->GetPlaneSize(handle_, 0);\n> diff --git a/src/android/mm/generic_camera_buffer.cpp b/src/android/mm/generic_camera_buffer.cpp\n> index 37868d26..d4f3f22b 100644\n> --- a/src/android/mm/generic_camera_buffer.cpp\n> +++ b/src/android/mm/generic_camera_buffer.cpp\n> @@ -34,10 +34,15 @@ public:\n>  \n>  \tSpan<uint8_t> plane(unsigned int plane);\n>  \n> +\tunsigned int stride(unsigned int plane) const;\n> +\tunsigned int offset(unsigned int plane) const;\n> +\tunsigned int size(unsigned int plane) const;\n> +\n>  \tsize_t jpegBufferSize(size_t maxJpegBufferSize) const;\n>  \n>  private:\n>  \tstruct PlaneInfo {\n> +\t\tunsigned int stride;\n>  \t\tunsigned int offset;\n>  \t\tunsigned int size;\n>  \t};\n> @@ -110,6 +115,7 @@ CameraBuffer::Private::Private([[maybe_unused]] CameraBuffer *cameraBuffer,\n>  \t\tconst unsigned int planeSize =\n>  \t\t\tstride * ((size.height + vertSubSample - 1) / vertSubSample);\n>  \n> +\t\tplaneInfo_[i].stride = stride;\n>  \t\tplaneInfo_[i].offset = offset;\n>  \t\tplaneInfo_[i].size = planeSize;\n>  \n> @@ -145,6 +151,30 @@ Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)\n>  \treturn planes_[plane];\n>  }\n>  \n> +unsigned int CameraBuffer::Private::stride(unsigned int plane) const\n> +{\n> +\tif (plane >= planeInfo_.size())\n> +\t\treturn 0;\n> +\n> +\treturn planeInfo_[plane].stride;\n> +}\n> +\n> +unsigned int CameraBuffer::Private::offset(unsigned int plane) const\n> +{\n> +\tif (plane >= planeInfo_.size())\n> +\t\treturn 0;\n> +\n> +\treturn planeInfo_[plane].offset;\n> +}\n> +\n> +unsigned int CameraBuffer::Private::size(unsigned int plane) const\n> +{\n> +\tif (plane >= planeInfo_.size())\n> +\t\treturn 0;\n> +\n> +\treturn planeInfo_[plane].size;\n> +}\n> +\n>  size_t CameraBuffer::Private::jpegBufferSize(size_t maxJpegBufferSize) const\n>  {\n>  \tif (maps_.empty()) {","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 96E60BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Aug 2021 20:35:25 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 18B0668893;\n\tWed, 25 Aug 2021 22:35:25 +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 5CC4560288\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Aug 2021 22:35:23 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CEB5624F;\n\tWed, 25 Aug 2021 22:35:22 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"c08qbU8P\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1629923723;\n\tbh=bfd5oR/IDqx5THNSfSDyOEUra12PFj3frHWjWKnKon8=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=c08qbU8PLpu3JOAr84XZj0feysoAaxkygjgbkKkw1AoHxkDLW/pFsQhWAJKlohW04\n\tqE8hQhn3hH9rBLLagcsZNWDxz5lyiF2fegaMPY9+Tba3CCP900ytWNulpchMLazse+\n\tI5DTkWtQjQ+iIrbluV784aHphEQSAD1NAZpZFx+4=","Date":"Wed, 25 Aug 2021 23:35:10 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<YSapfuHoQKnpFbY7@pendragon.ideasonboard.com>","References":"<20210825044410.2787433-1-hiroh@chromium.org>\n\t<20210825044410.2787433-4-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210825044410.2787433-4-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH v2 3/3] android: camera_buffer: Add\n\tstride/offset/size function","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>"}}]