[{"id":19114,"web_url":"https://patchwork.libcamera.org/comment/19114/","msgid":"<20210826213847.gdl2tqtkmldemfv7@uno.localdomain>","date":"2021-08-26T21:38:47","subject":"Re: [libcamera-devel] [PATCH v3 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 Thu, Aug 26, 2021 at 05:00:21PM +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> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\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 ba6650cf..44993379 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> @@ -111,6 +115,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 cfe55b69..4f0a3207 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> @@ -114,6 +119,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> @@ -148,6 +154,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>  \tASSERT(bufferLength_ >= 0);\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 76595BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 26 Aug 2021 21:38:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 083C968932;\n\tThu, 26 Aug 2021 23:38:01 +0200 (CEST)","from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net\n\t[217.70.183.196])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0238468920\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 26 Aug 2021 23:37:59 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 3363AE0007;\n\tThu, 26 Aug 2021 21:37:58 +0000 (UTC)"],"Date":"Thu, 26 Aug 2021 23:38:47 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20210826213847.gdl2tqtkmldemfv7@uno.localdomain>","References":"<20210826080021.3454520-1-hiroh@chromium.org>\n\t<20210826080021.3454520-4-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210826080021.3454520-4-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH v3 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>"}}]