libcamera: camera_sensor: Validate Transform

The two pipeline handlers that currently support Transform (IPU3 and
RaspberryPi) implement it by operating H/V flips on the image sensor.

Centralize the code that validates a Transform request against the
sensor rotation capabilities in the CameraSensor class.

The implementation in the IPU3 pipeline handler was copied from the
RaspberryPi implementation, and is now centralized in CameraSensor to
make it easier for other platforms.

The CameraSensor::validateTransform() implementation comes directly from
the RaspberryPi pipeline handler, no functional changes intended.

Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
This commit is contained in:
Jacopo Mondi 2022-11-24 10:10:26 +01:00
parent e030bac390
commit 1a614866a2
4 changed files with 89 additions and 91 deletions

View file

@ -29,6 +29,8 @@ class BayerFormat;
class CameraLens;
class MediaEntity;
enum class Transform;
struct CameraSensorProperties;
class CameraSensor : protected Loggable
@ -68,6 +70,8 @@ public:
CameraLens *focusLens() { return focusLens_.get(); }
Transform validateTransform(Transform *transform) const;
protected:
std::string logPrefix() const override;