libcamera: geometry: Construct SizeRange from Size
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 <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
4ff18e9506
commit
a69414529f
7 changed files with 36 additions and 45 deletions
|
@ -74,21 +74,19 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SizeRange(unsigned int width, unsigned int height)
|
SizeRange(const Size &size)
|
||||||
: min(width, height), max(width, height), hStep(1), vStep(1)
|
: min(size), max(size), hStep(1), vStep(1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SizeRange(unsigned int minW, unsigned int minH,
|
SizeRange(const Size &minSize, const Size &maxSize)
|
||||||
unsigned int maxW, unsigned int maxH)
|
: min(minSize), max(maxSize), hStep(1), vStep(1)
|
||||||
: min(minW, minH), max(maxW, maxH), hStep(1), vStep(1)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SizeRange(unsigned int minW, unsigned int minH,
|
SizeRange(const Size &minSize, const Size &maxSize,
|
||||||
unsigned int maxW, unsigned int maxH,
|
|
||||||
unsigned int hstep, unsigned int vstep)
|
unsigned int hstep, unsigned int vstep)
|
||||||
: min(minW, minH), max(maxW, maxH), hStep(hstep), vStep(vstep)
|
: min(minSize), max(maxSize), hStep(hstep), vStep(vstep)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
* \brief Construct a size range representing a single size
|
||||||
* \param[in] width The size width
|
* \param[in] size The size
|
||||||
* \param[in] height The size height
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \fn SizeRange::SizeRange(unsigned int minW, unsigned int minH,
|
* \fn SizeRange::SizeRange(const Size &minSize, const Size &maxSize)
|
||||||
* unsigned int maxW, unsigned int maxH)
|
* \brief Construct a size range with specified min and max, and steps of 1
|
||||||
* \brief Construct an initialized size range
|
* \param[in] minSize The minimum size
|
||||||
* \param[in] minW The minimum width
|
* \param[in] maxSize The maximum size
|
||||||
* \param[in] minH The minimum height
|
|
||||||
* \param[in] maxW The maximum width
|
|
||||||
* \param[in] maxH The maximum height
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \fn SizeRange::SizeRange(unsigned int minW, unsigned int minH,
|
* \fn SizeRange::SizeRange(const Size &minSize, const Size &maxSize,
|
||||||
* unsigned int maxW, unsigned int maxH,
|
|
||||||
* unsigned int hstep, unsigned int vstep)
|
* unsigned int hstep, unsigned int vstep)
|
||||||
* \brief Construct an initialized size range
|
* \brief Construct a size range with specified min, max and step
|
||||||
* \param[in] minW The minimum width
|
* \param[in] minSize The minimum size
|
||||||
* \param[in] minH The minimum height
|
* \param[in] maxSize The maximum size
|
||||||
* \param[in] maxW The maximum width
|
|
||||||
* \param[in] maxH The maximum height
|
|
||||||
* \param[in] hstep The horizontal step
|
* \param[in] hstep The horizontal step
|
||||||
* \param[in] vstep The vertical step
|
* \param[in] vstep The vertical step
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -177,7 +177,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,
|
||||||
for (PixelFormat pixelformat : pixelformats) {
|
for (PixelFormat pixelformat : pixelformats) {
|
||||||
/* The scaler hardcodes a x3 scale-up ratio. */
|
/* The scaler hardcodes a x3 scale-up ratio. */
|
||||||
std::vector<SizeRange> sizes{
|
std::vector<SizeRange> sizes{
|
||||||
SizeRange{ 48, 48, 4096, 2160 }
|
SizeRange{ { 48, 48 }, { 4096, 2160 } }
|
||||||
};
|
};
|
||||||
formats[pixelformat] = sizes;
|
formats[pixelformat] = sizes;
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,7 +251,7 @@ SizeRange StreamFormats::range(const PixelFormat &pixelformat) const
|
||||||
return ranges[0];
|
return ranges[0];
|
||||||
|
|
||||||
LOG(Stream, Debug) << "Building range from discrete sizes";
|
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) {
|
for (const SizeRange &limit : ranges) {
|
||||||
if (limit.min < range.min)
|
if (limit.min < range.min)
|
||||||
range.min = limit.min;
|
range.min = limit.min;
|
||||||
|
|
|
@ -313,8 +313,8 @@ std::vector<SizeRange> V4L2Subdevice::enumPadSizes(unsigned int pad,
|
||||||
if (ret)
|
if (ret)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
sizes.emplace_back(sizeEnum.min_width, sizeEnum.min_height,
|
sizes.emplace_back(Size{ sizeEnum.min_width, sizeEnum.min_height },
|
||||||
sizeEnum.max_width, sizeEnum.max_height);
|
Size{ sizeEnum.max_width, sizeEnum.max_height });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret < 0 && ret != -EINVAL && ret != -ENOTTY) {
|
if (ret < 0 && ret != -EINVAL && ret != -ENOTTY) {
|
||||||
|
|
|
@ -971,20 +971,20 @@ std::vector<SizeRange> V4L2VideoDevice::enumSizes(unsigned int pixelFormat)
|
||||||
|
|
||||||
switch (frameSize.type) {
|
switch (frameSize.type) {
|
||||||
case V4L2_FRMSIZE_TYPE_DISCRETE:
|
case V4L2_FRMSIZE_TYPE_DISCRETE:
|
||||||
sizes.emplace_back(frameSize.discrete.width,
|
sizes.emplace_back(Size{ frameSize.discrete.width,
|
||||||
frameSize.discrete.height);
|
frameSize.discrete.height });
|
||||||
break;
|
break;
|
||||||
case V4L2_FRMSIZE_TYPE_CONTINUOUS:
|
case V4L2_FRMSIZE_TYPE_CONTINUOUS:
|
||||||
sizes.emplace_back(frameSize.stepwise.min_width,
|
sizes.emplace_back(Size{ frameSize.stepwise.min_width,
|
||||||
frameSize.stepwise.min_height,
|
frameSize.stepwise.min_height },
|
||||||
frameSize.stepwise.max_width,
|
Size{ frameSize.stepwise.max_width,
|
||||||
frameSize.stepwise.max_height);
|
frameSize.stepwise.max_height });
|
||||||
break;
|
break;
|
||||||
case V4L2_FRMSIZE_TYPE_STEPWISE:
|
case V4L2_FRMSIZE_TYPE_STEPWISE:
|
||||||
sizes.emplace_back(frameSize.stepwise.min_width,
|
sizes.emplace_back(Size{ frameSize.stepwise.min_width,
|
||||||
frameSize.stepwise.min_height,
|
frameSize.stepwise.min_height },
|
||||||
frameSize.stepwise.max_width,
|
Size{ frameSize.stepwise.max_width,
|
||||||
frameSize.stepwise.max_height,
|
frameSize.stepwise.max_height },
|
||||||
frameSize.stepwise.step_width,
|
frameSize.stepwise.step_width,
|
||||||
frameSize.stepwise.step_height);
|
frameSize.stepwise.step_height);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -55,8 +55,8 @@ protected:
|
||||||
{
|
{
|
||||||
/* Test discrete sizes */
|
/* Test discrete sizes */
|
||||||
StreamFormats discrete({
|
StreamFormats discrete({
|
||||||
{ PixelFormat(1), { SizeRange(100, 100), SizeRange(200, 200) } },
|
{ PixelFormat(1), { SizeRange({ 100, 100 }), SizeRange({ 200, 200 }) } },
|
||||||
{ PixelFormat(2), { SizeRange(300, 300), SizeRange(400, 400) } },
|
{ PixelFormat(2), { SizeRange({ 300, 300 }), SizeRange({ 400, 400 }) } },
|
||||||
});
|
});
|
||||||
|
|
||||||
if (testSizes("discrete 1", discrete.sizes(PixelFormat(1)),
|
if (testSizes("discrete 1", discrete.sizes(PixelFormat(1)),
|
||||||
|
@ -68,10 +68,10 @@ protected:
|
||||||
|
|
||||||
/* Test range sizes */
|
/* Test range sizes */
|
||||||
StreamFormats range({
|
StreamFormats range({
|
||||||
{ PixelFormat(1), { SizeRange(640, 480, 640, 480) } },
|
{ PixelFormat(1), { SizeRange({ 640, 480 }, { 640, 480 }) } },
|
||||||
{ PixelFormat(2), { SizeRange(640, 480, 800, 600, 8, 8) } },
|
{ PixelFormat(2), { SizeRange({ 640, 480 }, { 800, 600 }, 8, 8) } },
|
||||||
{ PixelFormat(3), { SizeRange(640, 480, 800, 600, 16, 16) } },
|
{ PixelFormat(3), { SizeRange({ 640, 480 }, { 800, 600 }, 16, 16) } },
|
||||||
{ PixelFormat(4), { SizeRange(128, 128, 4096, 4096, 128, 128) } },
|
{ PixelFormat(4), { SizeRange({ 128, 128 }, { 4096, 4096 }, 128, 128) } },
|
||||||
});
|
});
|
||||||
|
|
||||||
if (testSizes("range 1", range.sizes(PixelFormat(1)), { Size(640, 480) }))
|
if (testSizes("range 1", range.sizes(PixelFormat(1)), { Size(640, 480) }))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue