From patchwork Wed Mar 18 17:23:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 3177 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id EDC1B60418 for ; Wed, 18 Mar 2020 18:23:49 +0100 (CET) Received: from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A47D85F for ; Wed, 18 Mar 2020 18:23:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1584552228; bh=1T2jq580Zv43hoLCoQ4Ff5dgWvUllnT4kjSdRLfonYo=; h=From:To:Subject:Date:From; b=CPU/vj15fuLQgROs/0nAbb5CAKQEEHicto7z7q4myxFBWMYJl5s2lk+gJIuT+mW6Z 93EBOhtHXkdXNUckOKxwvxb0tmxKkuENwWbMle/0Ce1bV6iUnJzCnGFliZAIVKcSRR wB2NSJd1E28JhXORkgBemrCcIx/1bfT5Wby/s+ws= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Wed, 18 Mar 2020 19:23:37 +0200 Message-Id: <20200318172337.7715-1-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH] libcamera: geometry: Construct SizeRange from Size X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Mar 2020 17:23:50 -0000 The SizeRange constructors take minimum and maximum width and height values as separate arguments. We have a Size class to convey size information, use it in the constructors, and update the callers. Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund Reviewed-by: Kieran Bingham --- include/libcamera/geometry.h | 14 ++++++-------- src/libcamera/geometry.cpp | 27 ++++++++++----------------- src/libcamera/pipeline/vimc.cpp | 2 +- src/libcamera/stream.cpp | 2 +- src/libcamera/v4l2_subdevice.cpp | 4 ++-- src/libcamera/v4l2_videodevice.cpp | 20 ++++++++++---------- test/stream/stream_formats.cpp | 12 ++++++------ 7 files changed, 36 insertions(+), 45 deletions(-) diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h index 52f4d010de76..7f1b29fe8c19 100644 --- a/include/libcamera/geometry.h +++ b/include/libcamera/geometry.h @@ -74,21 +74,19 @@ public: { } - SizeRange(unsigned int width, unsigned int height) - : min(width, height), max(width, height), hStep(1), vStep(1) + SizeRange(const Size &size) + : min(size), max(size), hStep(1), vStep(1) { } - SizeRange(unsigned int minW, unsigned int minH, - unsigned int maxW, unsigned int maxH) - : min(minW, minH), max(maxW, maxH), hStep(1), vStep(1) + SizeRange(const Size &minSize, const Size &maxSize) + : min(minSize), max(maxSize), hStep(1), vStep(1) { } - SizeRange(unsigned int minW, unsigned int minH, - unsigned int maxW, unsigned int maxH, + SizeRange(const Size &minSize, const Size &maxSize, unsigned int hstep, unsigned int vstep) - : min(minW, minH), max(maxW, maxH), hStep(hstep), vStep(vstep) + : min(minSize), max(maxSize), hStep(hstep), vStep(vstep) { } diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp index 92c53f64a58b..75cdcc7c42f1 100644 --- a/src/libcamera/geometry.cpp +++ b/src/libcamera/geometry.cpp @@ -217,31 +217,24 @@ bool operator<(const Size &lhs, const Size &rhs) */ /** - * \fn SizeRange::SizeRange(unsigned int width, unsigned int height) + * \fn SizeRange::SizeRange(const Size &size) * \brief Construct a size range representing a single size - * \param[in] width The size width - * \param[in] height The size height + * \param[in] size The size */ /** - * \fn SizeRange::SizeRange(unsigned int minW, unsigned int minH, - * unsigned int maxW, unsigned int maxH) - * \brief Construct an initialized size range - * \param[in] minW The minimum width - * \param[in] minH The minimum height - * \param[in] maxW The maximum width - * \param[in] maxH The maximum height + * \fn SizeRange::SizeRange(const Size &minSize, const Size &maxSize) + * \brief Construct a size range with specified min and max and steps of 1 + * \param[in] minSize The minimum size + * \param[in] maxSize The maximum size */ /** - * \fn SizeRange::SizeRange(unsigned int minW, unsigned int minH, - * unsigned int maxW, unsigned int maxH, + * \fn SizeRange::SizeRange(const Size &minSize, const Size &maxSize, * unsigned int hstep, unsigned int vstep) - * \brief Construct an initialized size range - * \param[in] minW The minimum width - * \param[in] minH The minimum height - * \param[in] maxW The maximum width - * \param[in] maxH The maximum height + * \brief Construct a size range with specified min, max and step + * \param[in] minSize The minimum size + * \param[in] maxSize The maximum size * \param[in] hstep The horizontal step * \param[in] vstep The vertical step */ diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp index fa84f0c1b20d..cbf330614bd6 100644 --- a/src/libcamera/pipeline/vimc.cpp +++ b/src/libcamera/pipeline/vimc.cpp @@ -177,7 +177,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera, for (PixelFormat pixelformat : pixelformats) { /* The scaler hardcodes a x3 scale-up ratio. */ std::vector sizes{ - SizeRange{ 48, 48, 4096, 2160 } + SizeRange{ { 48, 48 }, { 4096, 2160 } } }; formats[pixelformat] = sizes; } diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp index e61484caf715..ea3d214271ad 100644 --- a/src/libcamera/stream.cpp +++ b/src/libcamera/stream.cpp @@ -251,7 +251,7 @@ SizeRange StreamFormats::range(const PixelFormat &pixelformat) const return ranges[0]; LOG(Stream, Debug) << "Building range from discrete sizes"; - SizeRange range(UINT_MAX, UINT_MAX, 0, 0); + SizeRange range({ UINT_MAX, UINT_MAX }, { 0, 0 }); for (const SizeRange &limit : ranges) { if (limit.min < range.min) range.min = limit.min; diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp index f2bcd7f73c5c..8b9da81e8ab3 100644 --- a/src/libcamera/v4l2_subdevice.cpp +++ b/src/libcamera/v4l2_subdevice.cpp @@ -313,8 +313,8 @@ std::vector V4L2Subdevice::enumPadSizes(unsigned int pad, if (ret) break; - sizes.emplace_back(sizeEnum.min_width, sizeEnum.min_height, - sizeEnum.max_width, sizeEnum.max_height); + sizes.emplace_back(Size{ sizeEnum.min_width, sizeEnum.min_height }, + Size{ sizeEnum.max_width, sizeEnum.max_height }); } if (ret < 0 && ret != -EINVAL && ret != -ENOTTY) { diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp index fde8bd88e254..56251a465807 100644 --- a/src/libcamera/v4l2_videodevice.cpp +++ b/src/libcamera/v4l2_videodevice.cpp @@ -971,20 +971,20 @@ std::vector V4L2VideoDevice::enumSizes(unsigned int pixelFormat) switch (frameSize.type) { case V4L2_FRMSIZE_TYPE_DISCRETE: - sizes.emplace_back(frameSize.discrete.width, - frameSize.discrete.height); + sizes.emplace_back(Size{ frameSize.discrete.width, + frameSize.discrete.height }); break; case V4L2_FRMSIZE_TYPE_CONTINUOUS: - sizes.emplace_back(frameSize.stepwise.min_width, - frameSize.stepwise.min_height, - frameSize.stepwise.max_width, - frameSize.stepwise.max_height); + sizes.emplace_back(Size{ frameSize.stepwise.min_width, + frameSize.stepwise.min_height }, + Size{ frameSize.stepwise.max_width, + frameSize.stepwise.max_height }); break; case V4L2_FRMSIZE_TYPE_STEPWISE: - sizes.emplace_back(frameSize.stepwise.min_width, - frameSize.stepwise.min_height, - frameSize.stepwise.max_width, - frameSize.stepwise.max_height, + sizes.emplace_back(Size{ frameSize.stepwise.min_width, + frameSize.stepwise.min_height }, + Size{ frameSize.stepwise.max_width, + frameSize.stepwise.max_height }, frameSize.stepwise.step_width, frameSize.stepwise.step_height); break; diff --git a/test/stream/stream_formats.cpp b/test/stream/stream_formats.cpp index 92f1574b8a0b..9353d0085e19 100644 --- a/test/stream/stream_formats.cpp +++ b/test/stream/stream_formats.cpp @@ -55,8 +55,8 @@ protected: { /* Test discrete sizes */ StreamFormats discrete({ - { PixelFormat(1), { SizeRange(100, 100), SizeRange(200, 200) } }, - { PixelFormat(2), { SizeRange(300, 300), SizeRange(400, 400) } }, + { PixelFormat(1), { SizeRange({ 100, 100 }), SizeRange({ 200, 200 }) } }, + { PixelFormat(2), { SizeRange({ 300, 300 }), SizeRange({ 400, 400 }) } }, }); if (testSizes("discrete 1", discrete.sizes(PixelFormat(1)), @@ -68,10 +68,10 @@ protected: /* Test range sizes */ StreamFormats range({ - { PixelFormat(1), { SizeRange(640, 480, 640, 480) } }, - { PixelFormat(2), { SizeRange(640, 480, 800, 600, 8, 8) } }, - { PixelFormat(3), { SizeRange(640, 480, 800, 600, 16, 16) } }, - { PixelFormat(4), { SizeRange(128, 128, 4096, 4096, 128, 128) } }, + { PixelFormat(1), { SizeRange({ 640, 480 }, { 640, 480 }) } }, + { PixelFormat(2), { SizeRange({ 640, 480 }, { 800, 600 }, 8, 8) } }, + { PixelFormat(3), { SizeRange({ 640, 480 }, { 800, 600 }, 16, 16) } }, + { PixelFormat(4), { SizeRange({ 128, 128 }, { 4096, 4096 }, 128, 128) } }, }); if (testSizes("range 1", range.sizes(PixelFormat(1)), { Size(640, 480) }))