mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-25 17:45:06 +03:00
libcamera: camera_sensor: Print warning when orientation is unknown
Print a warning when the orientation of a sensor is unknown. The location property is still defaulted to external. Also add a recommended controls list, similar to the optional and mandatory controls list, to handle controls in a similar situation in the future. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
6e65d42257
commit
edc771ef2f
1 changed files with 21 additions and 2 deletions
|
@ -276,12 +276,13 @@ int CameraSensor::init()
|
||||||
|
|
||||||
int CameraSensor::validateSensorDriver()
|
int CameraSensor::validateSensorDriver()
|
||||||
{
|
{
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Optional controls are used to register optional sensor properties. If
|
* Optional controls are used to register optional sensor properties. If
|
||||||
* not present, some values will be defaulted.
|
* not present, some values will be defaulted.
|
||||||
*/
|
*/
|
||||||
static constexpr uint32_t optionalControls[] = {
|
static constexpr uint32_t optionalControls[] = {
|
||||||
V4L2_CID_CAMERA_ORIENTATION,
|
|
||||||
V4L2_CID_CAMERA_SENSOR_ROTATION,
|
V4L2_CID_CAMERA_SENSOR_ROTATION,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -293,6 +294,23 @@ int CameraSensor::validateSensorDriver()
|
||||||
<< " not supported";
|
<< " not supported";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Recommended controls are similar to optional controls, but will
|
||||||
|
* become mandatory in the near future. Be loud if they're missing.
|
||||||
|
*/
|
||||||
|
static constexpr uint32_t recommendedControls[] = {
|
||||||
|
V4L2_CID_CAMERA_ORIENTATION,
|
||||||
|
};
|
||||||
|
|
||||||
|
for (uint32_t ctrl : recommendedControls) {
|
||||||
|
if (!controls.count(ctrl)) {
|
||||||
|
LOG(CameraSensor, Warning)
|
||||||
|
<< "Recommended V4L2 control " << utils::hex(ctrl)
|
||||||
|
<< " not supported";
|
||||||
|
err = -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure the required selection targets are supported.
|
* Make sure the required selection targets are supported.
|
||||||
*
|
*
|
||||||
|
@ -303,7 +321,6 @@ int CameraSensor::validateSensorDriver()
|
||||||
* \todo Make support for selection targets mandatory as soon as all
|
* \todo Make support for selection targets mandatory as soon as all
|
||||||
* test platforms have been updated.
|
* test platforms have been updated.
|
||||||
*/
|
*/
|
||||||
int err = 0;
|
|
||||||
Rectangle rect;
|
Rectangle rect;
|
||||||
int ret = subdev_->getSelection(pad_, V4L2_SEL_TGT_CROP_BOUNDS, &rect);
|
int ret = subdev_->getSelection(pad_, V4L2_SEL_TGT_CROP_BOUNDS, &rect);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -446,6 +463,8 @@ int CameraSensor::initProperties()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
LOG(CameraSensor, Warning)
|
||||||
|
<< "Failed to retrieve the camera location, setting to External";
|
||||||
propertyValue = properties::CameraLocationExternal;
|
propertyValue = properties::CameraLocationExternal;
|
||||||
}
|
}
|
||||||
properties_.set(properties::Location, propertyValue);
|
properties_.set(properties::Location, propertyValue);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue