libcamera: Use the Size class through libcamera
Several of our structures include width and height fields that model a size while we have a Size class for that purpose. Use the Size class through libcamera, and give it a toString() method like other geometry and format classes. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
baad55d009
commit
a2dddf7c26
19 changed files with 93 additions and 121 deletions
|
@ -40,6 +40,8 @@ struct Size {
|
|||
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
|
||||
const std::string toString() const;
|
||||
};
|
||||
|
||||
bool operator==(const Size &lhs, const Size &rhs);
|
||||
|
|
|
@ -17,9 +17,8 @@ namespace libcamera {
|
|||
class Camera;
|
||||
|
||||
struct StreamConfiguration {
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
unsigned int pixelFormat;
|
||||
Size size;
|
||||
|
||||
unsigned int bufferCount;
|
||||
|
||||
|
@ -40,7 +39,7 @@ public:
|
|||
|
||||
protected:
|
||||
explicit StreamUsage(Role role);
|
||||
StreamUsage(Role role, int width, int height);
|
||||
StreamUsage(Role role, const Size &size);
|
||||
|
||||
private:
|
||||
Role role_;
|
||||
|
|
|
@ -137,10 +137,10 @@ static int prepareCameraConfig(CameraConfiguration *config)
|
|||
it++;
|
||||
|
||||
if (conf.isSet("width"))
|
||||
(*config)[stream].width = conf["width"];
|
||||
(*config)[stream].size.width = conf["width"];
|
||||
|
||||
if (conf.isSet("height"))
|
||||
(*config)[stream].height = conf["height"];
|
||||
(*config)[stream].size.height = conf["height"];
|
||||
|
||||
/* TODO: Translate 4CC string to ID. */
|
||||
if (conf.isSet("pixelformat"))
|
||||
|
|
|
@ -131,7 +131,7 @@ bool CameraConfiguration::isValid() const
|
|||
for (auto const &it : config_) {
|
||||
const StreamConfiguration &conf = it.second;
|
||||
|
||||
if (conf.width == 0 || conf.height == 0 ||
|
||||
if (conf.size.width == 0 || conf.size.height == 0 ||
|
||||
conf.pixelFormat == 0 || conf.bufferCount == 0)
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -234,8 +234,7 @@ V4L2SubdeviceFormat CameraSensor::getFormat(const std::vector<unsigned int> &mbu
|
|||
return format;
|
||||
}
|
||||
|
||||
format.width = bestSize->width;
|
||||
format.height = bestSize->height;
|
||||
format.size = *bestSize;
|
||||
|
||||
return format;
|
||||
}
|
||||
|
|
|
@ -107,6 +107,15 @@ bool operator==(const Rectangle &lhs, const Rectangle &rhs)
|
|||
* \brief The Size height
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Assemble and return a string describing the size
|
||||
* \return A string describing the size
|
||||
*/
|
||||
const std::string Size::toString() const
|
||||
{
|
||||
return std::to_string(width) + "x" + std::to_string(height);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Compare sizes for equality
|
||||
* \return True if the two sizes are equal, false otherwise
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
#include <libcamera/geometry.h>
|
||||
#include <libcamera/signal.h>
|
||||
|
||||
#include "log.h"
|
||||
|
@ -92,9 +93,8 @@ struct V4L2Capability final : v4l2_capability {
|
|||
class V4L2DeviceFormat
|
||||
{
|
||||
public:
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t fourcc;
|
||||
Size size;
|
||||
|
||||
struct {
|
||||
uint32_t size;
|
||||
|
|
|
@ -23,8 +23,7 @@ class MediaDevice;
|
|||
|
||||
struct V4L2SubdeviceFormat {
|
||||
uint32_t mbus_code;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
Size size;
|
||||
|
||||
const std::string toString() const;
|
||||
};
|
||||
|
|
|
@ -262,8 +262,7 @@ PipelineHandlerIPU3::streamConfiguration(Camera *camera,
|
|||
*
|
||||
* \todo Clarify ImgU alignment requirements.
|
||||
*/
|
||||
streamConfig.width = 2560;
|
||||
streamConfig.height = 1920;
|
||||
streamConfig.size = { 2560, 1920 };
|
||||
|
||||
break;
|
||||
|
||||
|
@ -295,8 +294,7 @@ PipelineHandlerIPU3::streamConfiguration(Camera *camera,
|
|||
res.width);
|
||||
unsigned int height = std::min(usage.size().height,
|
||||
res.height);
|
||||
streamConfig.width = width & ~7;
|
||||
streamConfig.height = height & ~3;
|
||||
streamConfig.size = { width & ~7, height & ~3 };
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -347,15 +345,15 @@ int PipelineHandlerIPU3::configureStreams(Camera *camera,
|
|||
* \todo: Consider the BDS scaling factor requirements: "the
|
||||
* downscaling factor must be an integer value multiple of 1/32"
|
||||
*/
|
||||
if (cfg.width % 8 || cfg.height % 4) {
|
||||
if (cfg.size.width % 8 || cfg.size.height % 4) {
|
||||
LOG(IPU3, Error)
|
||||
<< "Invalid stream size: bad alignment";
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
const Size &resolution = cio2->sensor_->resolution();
|
||||
if (cfg.width > resolution.width ||
|
||||
cfg.height > resolution.height) {
|
||||
if (cfg.size.width > resolution.width ||
|
||||
cfg.size.height > resolution.height) {
|
||||
LOG(IPU3, Error)
|
||||
<< "Invalid stream size: larger than sensor resolution";
|
||||
return -EINVAL;
|
||||
|
@ -365,10 +363,10 @@ int PipelineHandlerIPU3::configureStreams(Camera *camera,
|
|||
* Collect the maximum width and height: IPU3 can downscale
|
||||
* only.
|
||||
*/
|
||||
if (cfg.width > sensorSize.width)
|
||||
sensorSize.width = cfg.width;
|
||||
if (cfg.height > sensorSize.height)
|
||||
sensorSize.height = cfg.height;
|
||||
if (cfg.size.width > sensorSize.width)
|
||||
sensorSize.width = cfg.size.width;
|
||||
if (cfg.size.height > sensorSize.height)
|
||||
sensorSize.height = cfg.size.height;
|
||||
|
||||
stream->active_ = true;
|
||||
}
|
||||
|
@ -427,8 +425,7 @@ int PipelineHandlerIPU3::configureStreams(Camera *camera,
|
|||
* \todo Revise this when we'll actually use the stat node.
|
||||
*/
|
||||
StreamConfiguration statConfig = {};
|
||||
statConfig.width = cio2Format.width;
|
||||
statConfig.height = cio2Format.height;
|
||||
statConfig.size = cio2Format.size;
|
||||
|
||||
ret = imgu->configureOutput(&imgu->stat_, statConfig);
|
||||
if (ret)
|
||||
|
@ -932,8 +929,8 @@ int ImgUDevice::configureInput(const Size &size,
|
|||
Rectangle rect = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.w = inputFormat->width,
|
||||
.h = inputFormat->height,
|
||||
.w = inputFormat->size.width,
|
||||
.h = inputFormat->size.height,
|
||||
};
|
||||
ret = imgu_->setCrop(PAD_INPUT, &rect);
|
||||
if (ret)
|
||||
|
@ -947,9 +944,8 @@ int ImgUDevice::configureInput(const Size &size,
|
|||
<< rect.toString();
|
||||
|
||||
V4L2SubdeviceFormat imguFormat = {};
|
||||
imguFormat.width = size.width;
|
||||
imguFormat.height = size.height;
|
||||
imguFormat.mbus_code = MEDIA_BUS_FMT_FIXED;
|
||||
imguFormat.size = size;
|
||||
|
||||
ret = imgu_->setFormat(PAD_INPUT, &imguFormat);
|
||||
if (ret)
|
||||
|
@ -973,9 +969,8 @@ int ImgUDevice::configureOutput(ImgUOutput *output,
|
|||
unsigned int pad = output->pad;
|
||||
|
||||
V4L2SubdeviceFormat imguFormat = {};
|
||||
imguFormat.width = config.width;
|
||||
imguFormat.height = config.height;
|
||||
imguFormat.mbus_code = MEDIA_BUS_FMT_FIXED;
|
||||
imguFormat.size = config.size;
|
||||
|
||||
int ret = imgu_->setFormat(pad, &imguFormat);
|
||||
if (ret)
|
||||
|
@ -986,9 +981,8 @@ int ImgUDevice::configureOutput(ImgUOutput *output,
|
|||
return 0;
|
||||
|
||||
V4L2DeviceFormat outputFormat = {};
|
||||
outputFormat.width = config.width;
|
||||
outputFormat.height = config.height;
|
||||
outputFormat.fourcc = V4L2_PIX_FMT_NV12;
|
||||
outputFormat.size = config.size;
|
||||
outputFormat.planesCount = 2;
|
||||
|
||||
ret = dev->setFormat(&outputFormat);
|
||||
|
@ -1288,9 +1282,8 @@ int CIO2Device::configure(const Size &size,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
outputFormat->width = sensorFormat.width;
|
||||
outputFormat->height = sensorFormat.height;
|
||||
outputFormat->fourcc = mediaBusToFormat(sensorFormat.mbus_code);
|
||||
outputFormat->size = sensorFormat.size;
|
||||
outputFormat->planesCount = 1;
|
||||
|
||||
ret = output_->setFormat(outputFormat);
|
||||
|
|
|
@ -116,10 +116,8 @@ CameraConfiguration PipelineHandlerRkISP1::streamConfiguration(Camera *camera,
|
|||
CameraConfiguration configs;
|
||||
StreamConfiguration config{};
|
||||
|
||||
const Size &resolution = data->sensor_->resolution();
|
||||
config.width = resolution.width;
|
||||
config.height = resolution.height;
|
||||
config.pixelFormat = V4L2_PIX_FMT_NV12;
|
||||
config.size = data->sensor_->resolution();
|
||||
config.bufferCount = RKISP1_BUFFER_COUNT;
|
||||
|
||||
configs[&data->stream_] = config;
|
||||
|
@ -137,8 +135,8 @@ int PipelineHandlerRkISP1::configureStreams(Camera *camera,
|
|||
|
||||
/* Verify the configuration. */
|
||||
const Size &resolution = sensor->resolution();
|
||||
if (cfg.width > resolution.width ||
|
||||
cfg.height > resolution.height) {
|
||||
if (cfg.size.width > resolution.width ||
|
||||
cfg.size.height > resolution.height) {
|
||||
LOG(RkISP1, Error)
|
||||
<< "Invalid stream size: larger than sensor resolution";
|
||||
return -EINVAL;
|
||||
|
@ -193,7 +191,7 @@ int PipelineHandlerRkISP1::configureStreams(Camera *camera,
|
|||
MEDIA_BUS_FMT_SGBRG8_1X8,
|
||||
MEDIA_BUS_FMT_SGRBG8_1X8,
|
||||
MEDIA_BUS_FMT_SRGGB8_1X8 },
|
||||
Size(cfg.width, cfg.height));
|
||||
cfg.size);
|
||||
|
||||
LOG(RkISP1, Debug) << "Configuring sensor with " << format.toString();
|
||||
|
||||
|
@ -216,17 +214,15 @@ int PipelineHandlerRkISP1::configureStreams(Camera *camera,
|
|||
return ret;
|
||||
|
||||
V4L2DeviceFormat outputFormat = {};
|
||||
outputFormat.width = cfg.width;
|
||||
outputFormat.height = cfg.height;
|
||||
outputFormat.fourcc = cfg.pixelFormat;
|
||||
outputFormat.size = cfg.size;
|
||||
outputFormat.planesCount = 2;
|
||||
|
||||
ret = video_->setFormat(&outputFormat);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (outputFormat.width != cfg.width ||
|
||||
outputFormat.height != cfg.height ||
|
||||
if (outputFormat.size != cfg.size ||
|
||||
outputFormat.fourcc != cfg.pixelFormat) {
|
||||
LOG(RkISP1, Error)
|
||||
<< "Unable to configure capture in " << cfg.toString();
|
||||
|
|
|
@ -92,9 +92,8 @@ PipelineHandlerUVC::streamConfiguration(Camera *camera,
|
|||
CameraConfiguration configs;
|
||||
StreamConfiguration config{};
|
||||
|
||||
config.width = 640;
|
||||
config.height = 480;
|
||||
config.pixelFormat = V4L2_PIX_FMT_YUYV;
|
||||
config.size = { 640, 480 };
|
||||
config.bufferCount = 4;
|
||||
|
||||
configs[&data->stream_] = config;
|
||||
|
@ -110,16 +109,14 @@ int PipelineHandlerUVC::configureStreams(Camera *camera,
|
|||
int ret;
|
||||
|
||||
V4L2DeviceFormat format = {};
|
||||
format.width = cfg->width;
|
||||
format.height = cfg->height;
|
||||
format.fourcc = cfg->pixelFormat;
|
||||
format.size = cfg->size;
|
||||
|
||||
ret = data->video_->setFormat(&format);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (format.width != cfg->width ||
|
||||
format.height != cfg->height ||
|
||||
if (format.size != cfg->size ||
|
||||
format.fourcc != cfg->pixelFormat)
|
||||
return -EINVAL;
|
||||
|
||||
|
|
|
@ -92,9 +92,8 @@ PipelineHandlerVimc::streamConfiguration(Camera *camera,
|
|||
CameraConfiguration configs;
|
||||
StreamConfiguration config{};
|
||||
|
||||
config.width = 640;
|
||||
config.height = 480;
|
||||
config.pixelFormat = V4L2_PIX_FMT_RGB24;
|
||||
config.size = { 640, 480 };
|
||||
config.bufferCount = 4;
|
||||
|
||||
configs[&data->stream_] = config;
|
||||
|
@ -110,16 +109,14 @@ int PipelineHandlerVimc::configureStreams(Camera *camera,
|
|||
int ret;
|
||||
|
||||
V4L2DeviceFormat format = {};
|
||||
format.width = cfg->width;
|
||||
format.height = cfg->height;
|
||||
format.fourcc = cfg->pixelFormat;
|
||||
format.size = cfg->size;
|
||||
|
||||
ret = data->video_->setFormat(&format);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (format.width != cfg->width ||
|
||||
format.height != cfg->height ||
|
||||
if (format.size != cfg->size ||
|
||||
format.fourcc != cfg->pixelFormat)
|
||||
return -EINVAL;
|
||||
|
||||
|
|
|
@ -41,13 +41,8 @@ namespace libcamera {
|
|||
*/
|
||||
|
||||
/**
|
||||
* \var StreamConfiguration::width
|
||||
* \brief Stream width in pixels
|
||||
*/
|
||||
|
||||
/**
|
||||
* \var StreamConfiguration::height
|
||||
* \brief Stream height in pixels
|
||||
* \var StreamConfiguration::size
|
||||
* \brief Stream size in pixels
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -73,8 +68,8 @@ std::string StreamConfiguration::toString() const
|
|||
std::stringstream ss;
|
||||
|
||||
ss.fill(0);
|
||||
ss << width << "x" << height << "-0x" << std::hex
|
||||
<< std::setw(8) << pixelFormat;
|
||||
ss << size.toString() << "-0x" << std::hex << std::setw(8)
|
||||
<< pixelFormat;
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
@ -128,11 +123,10 @@ StreamUsage::StreamUsage(Role role)
|
|||
/**
|
||||
* \brief Create a stream usage with a desired size
|
||||
* \param[in] role Stream role
|
||||
* \param[in] width The desired width
|
||||
* \param[in] height The desired height
|
||||
* \param[in] size The desired size
|
||||
*/
|
||||
StreamUsage::StreamUsage(Role role, int width, int height)
|
||||
: role_(role), size_(Size(width, height))
|
||||
StreamUsage::StreamUsage(Role role, const Size &size)
|
||||
: role_(role), size_(size)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -183,7 +177,7 @@ Stream::VideoRecording::VideoRecording()
|
|||
* \param[in] height The desired viewfinder height
|
||||
*/
|
||||
Stream::Viewfinder::Viewfinder(int width, int height)
|
||||
: StreamUsage(Role::Viewfinder, width, height)
|
||||
: StreamUsage(Role::Viewfinder, Size(width, height))
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -195,13 +195,8 @@ LOG_DEFINE_CATEGORY(V4L2)
|
|||
*/
|
||||
|
||||
/**
|
||||
* \var V4L2DeviceFormat::width
|
||||
* \brief The image width in pixels
|
||||
*/
|
||||
|
||||
/**
|
||||
* \var V4L2DeviceFormat::height
|
||||
* \brief The image height in pixels
|
||||
* \var V4L2DeviceFormat::size
|
||||
* \brief The image size in pixels
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -236,8 +231,7 @@ const std::string V4L2DeviceFormat::toString() const
|
|||
std::stringstream ss;
|
||||
|
||||
ss.fill(0);
|
||||
ss << width << "x" << height << "-0x" << std::hex
|
||||
<< std::setw(8) << fourcc;
|
||||
ss << size.toString() << "-0x" << std::hex << std::setw(8) << fourcc;
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
@ -458,8 +452,8 @@ int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)
|
|||
return ret;
|
||||
}
|
||||
|
||||
format->width = pix->width;
|
||||
format->height = pix->height;
|
||||
format->size.width = pix->width;
|
||||
format->size.height = pix->height;
|
||||
format->fourcc = pix->pixelformat;
|
||||
format->planesCount = 1;
|
||||
format->planes[0].bpl = pix->bytesperline;
|
||||
|
@ -475,8 +469,8 @@ int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)
|
|||
int ret;
|
||||
|
||||
v4l2Format.type = bufferType_;
|
||||
pix->width = format->width;
|
||||
pix->height = format->height;
|
||||
pix->width = format->size.width;
|
||||
pix->height = format->size.height;
|
||||
pix->pixelformat = format->fourcc;
|
||||
pix->bytesperline = format->planes[0].bpl;
|
||||
pix->field = V4L2_FIELD_NONE;
|
||||
|
@ -492,8 +486,8 @@ int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)
|
|||
* Return to caller the format actually applied on the device,
|
||||
* which might differ from the requested one.
|
||||
*/
|
||||
format->width = pix->width;
|
||||
format->height = pix->height;
|
||||
format->size.width = pix->width;
|
||||
format->size.height = pix->height;
|
||||
format->fourcc = pix->pixelformat;
|
||||
format->planesCount = 1;
|
||||
format->planes[0].bpl = pix->bytesperline;
|
||||
|
@ -516,8 +510,8 @@ int V4L2Device::getFormatMultiplane(V4L2DeviceFormat *format)
|
|||
return ret;
|
||||
}
|
||||
|
||||
format->width = pix->width;
|
||||
format->height = pix->height;
|
||||
format->size.width = pix->width;
|
||||
format->size.height = pix->height;
|
||||
format->fourcc = pix->pixelformat;
|
||||
format->planesCount = pix->num_planes;
|
||||
|
||||
|
@ -536,8 +530,8 @@ int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)
|
|||
int ret;
|
||||
|
||||
v4l2Format.type = bufferType_;
|
||||
pix->width = format->width;
|
||||
pix->height = format->height;
|
||||
pix->width = format->size.width;
|
||||
pix->height = format->size.height;
|
||||
pix->pixelformat = format->fourcc;
|
||||
pix->num_planes = format->planesCount;
|
||||
pix->field = V4L2_FIELD_NONE;
|
||||
|
@ -558,8 +552,8 @@ int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)
|
|||
* Return to caller the format actually applied on the device,
|
||||
* which might differ from the requested one.
|
||||
*/
|
||||
format->width = pix->width;
|
||||
format->height = pix->height;
|
||||
format->size.width = pix->width;
|
||||
format->size.height = pix->height;
|
||||
format->fourcc = pix->pixelformat;
|
||||
format->planesCount = pix->num_planes;
|
||||
for (unsigned int i = 0; i < format->planesCount; ++i) {
|
||||
|
|
|
@ -65,13 +65,8 @@ LOG_DEFINE_CATEGORY(V4L2Subdev)
|
|||
*/
|
||||
|
||||
/**
|
||||
* \var V4L2SubdeviceFormat::width
|
||||
* \brief The image width in pixels
|
||||
*/
|
||||
|
||||
/**
|
||||
* \var V4L2SubdeviceFormat::height
|
||||
* \brief The image height in pixels
|
||||
* \var V4L2SubdeviceFormat::size
|
||||
* \brief The image size in pixels
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -83,8 +78,7 @@ const std::string V4L2SubdeviceFormat::toString() const
|
|||
std::stringstream ss;
|
||||
|
||||
ss.fill(0);
|
||||
ss << width << "x" << height << "-0x" << std::hex
|
||||
<< std::setw(4) << mbus_code;
|
||||
ss << size.toString() << "-0x" << std::hex << std::setw(4) << mbus_code;
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
@ -265,8 +259,8 @@ int V4L2Subdevice::getFormat(unsigned int pad, V4L2SubdeviceFormat *format)
|
|||
return ret;
|
||||
}
|
||||
|
||||
format->width = subdevFmt.format.width;
|
||||
format->height = subdevFmt.format.height;
|
||||
format->size.width = subdevFmt.format.width;
|
||||
format->size.height = subdevFmt.format.height;
|
||||
format->mbus_code = subdevFmt.format.code;
|
||||
|
||||
return 0;
|
||||
|
@ -288,8 +282,8 @@ int V4L2Subdevice::setFormat(unsigned int pad, V4L2SubdeviceFormat *format)
|
|||
struct v4l2_subdev_format subdevFmt = {};
|
||||
subdevFmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
|
||||
subdevFmt.pad = pad;
|
||||
subdevFmt.format.width = format->width;
|
||||
subdevFmt.format.height = format->height;
|
||||
subdevFmt.format.width = format->size.width;
|
||||
subdevFmt.format.height = format->size.height;
|
||||
subdevFmt.format.code = format->mbus_code;
|
||||
|
||||
int ret = ioctl(fd_, VIDIOC_SUBDEV_S_FMT, &subdevFmt);
|
||||
|
@ -301,8 +295,8 @@ int V4L2Subdevice::setFormat(unsigned int pad, V4L2SubdeviceFormat *format)
|
|||
return ret;
|
||||
}
|
||||
|
||||
format->width = subdevFmt.format.width;
|
||||
format->height = subdevFmt.format.height;
|
||||
format->size.width = subdevFmt.format.width;
|
||||
format->size.height = subdevFmt.format.height;
|
||||
format->mbus_code = subdevFmt.format.code;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -106,7 +106,8 @@ int MainWindow::startCapture()
|
|||
}
|
||||
|
||||
const StreamConfiguration &sconf = config_[stream];
|
||||
ret = viewfinder_->setFormat(sconf.pixelFormat, sconf.width, sconf.height);
|
||||
ret = viewfinder_->setFormat(sconf.pixelFormat, sconf.size.width,
|
||||
sconf.size.height);
|
||||
if (ret < 0) {
|
||||
std::cout << "Failed to set viewfinder format" << std::endl;
|
||||
return ret;
|
||||
|
|
|
@ -64,8 +64,8 @@ protected:
|
|||
* the default configuration of the VIMC camera is known to
|
||||
* work.
|
||||
*/
|
||||
sconf->width *= 2;
|
||||
sconf->height *= 2;
|
||||
sconf->size.width *= 2;
|
||||
sconf->size.height *= 2;
|
||||
if (camera_->configureStreams(conf)) {
|
||||
cout << "Failed to set modified configuration" << endl;
|
||||
return TestFail;
|
||||
|
@ -74,8 +74,7 @@ protected:
|
|||
/*
|
||||
* Test that setting an invalid configuration fails.
|
||||
*/
|
||||
sconf->width = 0;
|
||||
sconf->height = 0;
|
||||
sconf->size = { 0, 0 };
|
||||
if (!camera_->configureStreams(conf)) {
|
||||
cout << "Invalid configuration incorrectly accepted" << endl;
|
||||
return TestFail;
|
||||
|
|
|
@ -31,8 +31,7 @@ int Format::run()
|
|||
return TestFail;
|
||||
}
|
||||
|
||||
format.width = UINT_MAX;
|
||||
format.height = UINT_MAX;
|
||||
format.size = { UINT_MAX, UINT_MAX };
|
||||
ret = capture_->setFormat(&format);
|
||||
if (ret) {
|
||||
cerr << "Failed to set format: image resolution is invalid: "
|
||||
|
@ -41,7 +40,8 @@ int Format::run()
|
|||
return TestFail;
|
||||
}
|
||||
|
||||
if (format.width == UINT_MAX || format.height == UINT_MAX) {
|
||||
if (format.size.width == UINT_MAX ||
|
||||
format.size.height == UINT_MAX) {
|
||||
cerr << "Failed to update image format = (UINT_MAX x UINT_MAX)"
|
||||
<< endl;
|
||||
return TestFail;
|
||||
|
|
|
@ -44,8 +44,7 @@ int FormatHandlingTest::run()
|
|||
/*
|
||||
* Set unrealistic image resolutions and make sure it gets updated.
|
||||
*/
|
||||
format.width = UINT_MAX;
|
||||
format.height = UINT_MAX;
|
||||
format.size = { UINT_MAX, UINT_MAX };
|
||||
ret = scaler_->setFormat(0, &format);
|
||||
if (ret) {
|
||||
cerr << "Failed to set format: image resolution is wrong, but "
|
||||
|
@ -53,13 +52,13 @@ int FormatHandlingTest::run()
|
|||
return TestFail;
|
||||
}
|
||||
|
||||
if (format.width == UINT_MAX || format.height == UINT_MAX) {
|
||||
if (format.size.width == UINT_MAX ||
|
||||
format.size.height == UINT_MAX) {
|
||||
cerr << "Failed to update image format" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
format.width = 0;
|
||||
format.height = 0;
|
||||
format.size = { 0, 0 };
|
||||
ret = scaler_->setFormat(0, &format);
|
||||
if (ret) {
|
||||
cerr << "Failed to set format: image resolution is wrong, but "
|
||||
|
@ -67,7 +66,7 @@ int FormatHandlingTest::run()
|
|||
return TestFail;
|
||||
}
|
||||
|
||||
if (format.width == 0 || format.height == 0) {
|
||||
if (format.size.width == 0 || format.size.height == 0) {
|
||||
cerr << "Failed to update image format" << endl;
|
||||
return TestFail;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue