summaryrefslogtreecommitdiff
path: root/src/libcamera/camera_sensor.cpp
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2020-11-06 14:27:59 +0100
committerJacopo Mondi <jacopo@jmondi.org>2020-12-07 14:26:33 +0100
commitb33a5c4153852274efc7e3cd076d057bb7affbed (patch)
treeae41f7aa3261f5b69d59887d2c7d64c98c55de6f /src/libcamera/camera_sensor.cpp
parentc5b732b2caacdedde53160e9cf4adc6901fb7454 (diff)
libcamera: camera_sensor: Adjust CameraSensorInfo::analogCrop
The CameraSensorInfo::analogCrop top-left corner is defined relatively to the sensor active area. The analogCrop rectangle is constucted by retrieving the V4L2 selection target V4L2_SEL_TGT_CROP which is instead defined relatively to the whole sensor's pixel array size. Adjust the the analogCrop rectangle subtracting from its top-left corner the active area distance from the full pixel array. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/libcamera/camera_sensor.cpp')
-rw-r--r--src/libcamera/camera_sensor.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 935de528..c5fa8914 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -527,6 +527,16 @@ int CameraSensor::sensorInfo(CameraSensorInfo *info) const
return ret;
}
+ /*
+ * CameraSensorInfo::analogCrop::x and CameraSensorInfo::analogCrop::y
+ * are defined relatively to the active pixel area, while V4L2's
+ * TGT_CROP target is defined in respect to the full pixel array.
+ *
+ * Compensate it by subtracting the active areas offset.
+ */
+ info->analogCrop.x -= rect.x;
+ info->analogCrop.y -= rect.y;
+
/* The bit depth and image size depend on the currently applied format. */
V4L2SubdeviceFormat format{};
ret = subdev_->getFormat(pad_, &format);