[libcamera-devel] [PATCH 05/11] libcamera: geometry: Use Size to store min and max in SizeRange
Jacopo Mondi
jacopo at jmondi.org
Tue Apr 16 17:03:08 CEST 2019
Hi Laurent,
On Mon, Apr 15, 2019 at 07:56:54PM +0300, Laurent Pinchart wrote:
> Instead of storing four integers for the minimum and maximum width and
> height in the SizeRange class, use two instance of the Size class for
> the minimum and maximum sizes.
>
> While it at replace the mention of image size with size in the SizeRange
> documentation, as the Size class isn't limited to image sizes.
>
Thanks
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> include/libcamera/geometry.h | 10 +++-------
> src/libcamera/geometry.cpp | 26 ++++++++------------------
> src/libcamera/pipeline/ipu3/ipu3.cpp | 17 ++++++++---------
> test/v4l2_subdevice/list_formats.cpp | 8 ++++----
> 4 files changed, 23 insertions(+), 38 deletions(-)
>
> diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h
> index 7704ab5add21..80f79c6ba2d3 100644
> --- a/include/libcamera/geometry.h
> +++ b/include/libcamera/geometry.h
> @@ -38,21 +38,17 @@ struct Size {
>
> struct SizeRange {
> SizeRange()
> - : SizeRange(0, 0, 0, 0)
> {
> }
>
> SizeRange(unsigned int minW, unsigned int minH,
> unsigned int maxW, unsigned int maxH)
> - : minWidth(minW), minHeight(minH), maxWidth(maxW),
> - maxHeight(maxH)
> + : min(minW, minH), max(maxW, maxH)
> {
> }
>
> - unsigned int minWidth;
> - unsigned int minHeight;
> - unsigned int maxWidth;
> - unsigned int maxHeight;
> + Size min;
> + Size max;
> };
>
> } /* namespace libcamera */
> diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp
> index 1f875bbe5f48..c1c7daed7259 100644
> --- a/src/libcamera/geometry.cpp
> +++ b/src/libcamera/geometry.cpp
> @@ -93,11 +93,11 @@ const std::string Rectangle::toString() const
>
> /**
> * \struct SizeRange
> - * \brief Describe a range of image sizes
> + * \brief Describe a range of sizes
> *
> - * SizeRange describes a range of image sizes included in the (minWidth,
> - * minHeight) - (maxWidth, maxHeight) interval. If the minimum and
> - * maximum sizes are identical it represents a single image resolution.
> + * SizeRange describes a range of sizes included in the [min, max]
> + * interval for both the width and the height. If the minimum and
> + * maximum sizes are identical it represents a single size.
> */
>
> /**
> @@ -115,23 +115,13 @@ const std::string Rectangle::toString() const
> */
>
> /**
> - * \var SizeRange::minWidth
> - * \brief The minimum image width
> + * \var SizeRange::min
> + * \brief The minimum size
> */
>
> /**
> - * \var SizeRange::minHeight
> - * \brief The minimum image height
> - */
> -
> -/**
> - * \var SizeRange::maxWidth
> - * \brief The maximum image width
> - */
> -
> -/**
> - * \var SizeRange::maxHeight
> - * \brief The maximum image height
> + * \var SizeRange::max
> + * \brief The maximum size
> */
>
> } /* namespace libcamera */
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index ff72be14d696..4ddd1ede1c81 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -1047,10 +1047,9 @@ int CIO2Device::init(const MediaDevice *media, unsigned int index)
> continue;
>
> for (const SizeRange &size : it.second) {
> - if (maxSize_.width < size.maxWidth &&
> - maxSize_.height < size.maxHeight) {
> - maxSize_.width = size.maxWidth;
> - maxSize_.height = size.maxHeight;
> + if (maxSize_.width < size.max.width &&
> + maxSize_.height < size.max.height) {
> + maxSize_ = size.max;
> mbusCode_ = mbusCode;
> }
> }
> @@ -1105,19 +1104,19 @@ int CIO2Device::configure(const StreamConfiguration &config,
> * as possible. This will need to be revisited when
> * implementing the scaling policy.
> */
> - if (size.maxWidth < config.width ||
> - size.maxHeight < config.height)
> + if (size.max.width < config.width ||
> + size.max.height < config.height)
> continue;
>
> - unsigned int diff = size.maxWidth * size.maxHeight
> + unsigned int diff = size.max.width * size.max.height
> - imageSize;
> if (diff >= best)
> continue;
>
> best = diff;
>
> - sensorFormat.width = size.maxWidth;
> - sensorFormat.height = size.maxHeight;
> + sensorFormat.width = size.max.width;
> + sensorFormat.height = size.max.height;
> sensorFormat.mbus_code = it.first;
> }
> }
> diff --git a/test/v4l2_subdevice/list_formats.cpp b/test/v4l2_subdevice/list_formats.cpp
> index 47ae3a1c1a28..09dec9abe854 100644
> --- a/test/v4l2_subdevice/list_formats.cpp
> +++ b/test/v4l2_subdevice/list_formats.cpp
> @@ -37,10 +37,10 @@ void ListFormatsTest::printFormats(unsigned int pad,
> for (SizeRange &size : sizes) {
> cout << " mbus code: 0x" << setfill('0') << setw(4)
> << hex << code << endl;
> - cout << " min width: " << dec << size.minWidth << endl;
> - cout << " min height: " << dec << size.minHeight << endl;
> - cout << " max width: " << dec << size.maxWidth << endl;
> - cout << " max height: " << dec << size.maxHeight << endl;
> + cout << " min width: " << dec << size.min.width << endl;
> + cout << " min height: " << dec << size.min.height << endl;
> + cout << " max width: " << dec << size.max.width << endl;
> + cout << " max height: " << dec << size.max.height << endl;
> }
> }
>
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20190416/b56c175a/attachment.sig>
More information about the libcamera-devel
mailing list